Jetty 9,字符编码为UTF-8

时间:2017-03-06 23:05:19

标签: encoding utf-8 jetty character

我遇到编码和Jetty的问题。

我的所有文件都以UTF-8编码,并包含正确的HTML元标记以指定UTF-8。

到目前为止,我所有的UTF-8文件都有BOM,我没有问题。但现在我正在使用不同的文本编辑器,我注意到我的UTF-8文件现在生成时没有BOM,从我读到的内容是一件好事,所以我决定从现在开始没有BOM。

但问题是Jetty似乎将我的所有JSP文件转换为ISO8859-1,然后再将它们发送到浏览器,如果他们没有BOM。它会导致问题,因为它们有一个UTF-8元标记,浏览器会将文件解释为UTF-8,重音和其他特殊字符不起作用。

到目前为止,我找到了一个解决方法,即使用以下命令启动所有JSP文件:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

这有效,但它有点烦人,因为我必须在每个文件的开头添加它,我宁愿有一些服务器范围的参数来避免这种情况,如果可能的话,但是因为我花了几个小时浏览网页解决方案我开始认为没有。

我尝试添加

JAVA_OPTIONS+=("-Dfile.encoding=UTF-8")

到我的JAVA_OPTIONS时,按照其他线程的建议启动jetty,但它似乎没有做任何事情。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

您似乎错过了pageEncoding属性。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

答案 1 :(得分:0)

在Jetty上处理UTF-8编码文件时,另一个对我有用的选项是更改webdefault.xml内容以支持UTF-8编码而不是默认的ISO-8859-1。

您可以在{{JETTY_HOME}} / etc / webdefault.xml中找到此文件

<locale-encoding-mapping>
  <locale>en</locale>
  <encoding>UTF-8</encoding>
</locale-encoding-mapping>

希望这有帮助。