由于升级到最新的Vertx3.2.2,StaticHandler使用Windows-1252编码从文件系统返回静态css、html等资源。之前的Vertx版本没有告诉任何编码。
现在,所有的utf-8数据(比如iconfont图标字符)都是乱码。
我曾尝试手动将Windows添加到文件的开头,但StaticHandler仍然充当UTF8 -1252(但至少浏览器能够识别utf标记并很好地呈现)。
怎样才能强制使用首选的字符编码,或者让statichandler识别文件编码?
发布于 2016-08-12 03:48:56
对此没有特定的Vert.x属性。如果您查看实际的StaticHandlerImpl实现,您会发现它的作用很简单:
String defaultContentEncoding = java.nio.charset.Charset.defaultCharset().name();其中,Charset是标准Java类。因此,在VM选项中设置-Dfile.encoding=UTF-8将适用于Vert.x。
我强烈建议您不要使用反射来解决这个问题,因为它非常老套。
发布于 2016-08-11 05:01:31
回答我自己的问题:
System.setProperty("file.encoding","UTF-8");
Field charset = Charset.class.getDeclaredField("defaultCharset");
charset.setAccessible(true);
charset.set(null,null);发布于 2020-02-24 21:47:49
https://stackoverflow.com/questions/38874489
复制相似问题