我正在构建一个Web应用程序,我必须处理国际字符(例如“J'aivisualillédesélèveàlarôtule”)。某些数据位于文件系统上任意目录中的任意静态文本文件中。这些文件都是utf-8(感谢标准化!)
为了提供这些数据,我使用了一个带有ResourceHandler处理程序的嵌入式jetty。我没有任何web.xml文件。除了静态之外,我还有一堆通过servlet处理的restful API。
问题是,Jetty ResourceHandler类似乎没有与静态文件Content-Type
一起发送字符集。如果我请求index.html,则Content-Type
为text/html
。为了正确处理突出的角色,我希望它是Content-Type: text/html; charset=utf-8
对于具有默认字符集utf-8的文件,如text/html
或text/css
,这很好,但有些文本文件没有,并被错误地解释为Windows-1252
和重音字符变得乱码(我只有一个Québec Liquor Store ,而不是QuébecLiquorStore )。有没有办法指定默认字符集并告诉jetty始终发送它?像apache AddDefaultCharset utf-8
答案 0 :(得分:5)
将所有内容硬编码为UTF-8是错误的。
如果只为你想要控制的那些文件指定mime-type映射的扩展名呢?
MimeTypes mimeTypes = resourceHandler.getMimeTypes();
mimeTypes.addMimeMapping("txt", "text/plain; charset=UTF-8");