我遇到编码和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,但它似乎没有做任何事情。
非常感谢任何帮助。
答案 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>
希望这有帮助。