自升级到最新的Vertx 3.2.2以来,StaticHandler使用Windows-1252编码从文件系统返回静态css,html等资源。以前的Vertx版本没有告诉任何编码。
现在,所有utf-8数据(例如iconfont图标字符)都是乱码。
我曾尝试手动将UTF8 BOM添加到文件的开头,但仍然将StaticHandler用作Windows-1252(但至少浏览器能够识别utf标记并进行良好渲染)。
如何强制首选字符编码,或使statichandler识别文件编码?
答案 0 :(得分:2)
没有特定的Vert.x属性。 如果你看一下实际的StaticHandlerImpl实现,你会发现它的作用很简单:
String defaultContentEncoding = java.nio.charset.Charset.defaultCharset().name();
Charset是标准Java类。
因此,在VM选项中设置-Dfile.encoding=UTF-8
将适用于Vert.x。
我强烈反对你不使用反射来解决这个问题,因为它非常黑客。
答案 1 :(得分:0)
回答我自己的问题:
System.setProperty("file.encoding","UTF-8");
Field charset = Charset.class.getDeclaredField("defaultCharset");
charset.setAccessible(true);
charset.set(null,null);
答案 2 :(得分:0)
您可以从vertx 3.4.0开始
<input id="value1" type="text">
<input id="value2" type="text">
<input id="value3" type="text">
<button id="add" type="button">Add</button>
<div>
<table>
<thead>
<tr>
th>value1</th>
<th>value2</th>
<th>value3</th>
</tr>
</thead>
<tbody id="tableData">
</tbody>
</table>
</div>