将charset添加到Jetty中的静态文件头

时间:2013-12-12 21:46:28

标签: utf-8 character-encoding embedded-jetty static-files

我正在构建一个Web应用程序,我必须处理国际字符(例如“J'aivisualillédesélèveàlarôtule”)。某些数据位于文件系统上任意目录中的任意静态文本文件中。这些文件都是utf-8(感谢标准化!)

为了提供这些数据,我使用了一个带有ResourceHandler处理程序的嵌入式jetty。我没有任何web.xml文件。除了静态之外,我还有一堆通过servlet处理的restful API。

问题是,Jetty ResourceHandler类似乎没有与静态文件Content-Type一起发送字符集。如果我请求index.html,则Content-Typetext/html。为了正确处理突出的角色,我希望它是Content-Type: text/html; charset=utf-8

对于具有默认字符集utf-8的文件,如text/htmltext/css,这很好,但有些文本文件没有,并被错误地解释为Windows-1252和重音字符变得乱码(我只有一个Québec Liquor Store ,而不是QuébecLiquorStore )。有没有办法指定默认字符集并告诉jetty始终发送它?像apache AddDefaultCharset utf-8

这样的东西

1 个答案:

答案 0 :(得分:5)

将所有内容硬编码为UTF-8是错误的。

如果只为你想要控制的那些文件指定mime-type映射的扩展名呢?

MimeTypes mimeTypes = resourceHandler.getMimeTypes();
mimeTypes.addMimeMapping("txt", "text/plain; charset=UTF-8");