如何为vertx.io staticHandler设置字符编码?

时间:2016-08-10 13:12:29

标签: utf-8 character-encoding vert.x

自升级到最新的Vertx 3.2.2以来,StaticHandler使用Windows-1252编码从文件系统返回静态css,html等资源。以前的Vertx版本没有告诉任何编码。

现在,所有utf-8数据(例如iconfont图标字符)都是乱码。

我曾尝试手动将UTF8 BOM添加到文件的开头,但仍然将StaticHandler用作Windows-1252(但至少浏览器能够识别utf标记并进行良好渲染)。

如何强制首选字符编码,或使statichandler识别文件编码?

3 个答案:

答案 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);

来自:Setting the default Java character encoding?

答案 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>

docs