我遇到了编码和码头问题。码头9,字符编码UTF-8
我的所有文件都以UTF-8编码,并包含正确的HTML元标记以指定UTF-8。
到现在为止,我的所有UTF-8文件都有BOM,而且我没有问题。但是现在我正在使用不同的文本编辑器,并且我注意到现在生成的我的UTF-8文件没有BOM,从我阅读的内容来看,这是一件好事,因此我决定从现在开始不使用BOM。
但问题是,如果Jetty没有BOM,它似乎将所有JSP文件转换为ISO8859-1,然后再将它们发送到浏览器。它会导致问题,因为由于它们具有用于UTF-8的元标记,所以浏览器将文件解释为UTF-8,并且重音符号和其他特殊字符不起作用。
我找到了一个解决办法,到目前为止这是开始用我所有的JSP文件:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
这工作,但它是kindof烦人,因为我必须在每个文件的开头添加了这一点,我宁愿有一些服务器范围的参数来避免这种情况,如果可能的话,但因为我花了几个小时浏览网络寻求解决方案,我开始认为没有。
我试图
JAVA_OPTIONS+=("-Dfile.encoding=UTF-8")
码头开始时如在其他线程建议添加到我的JAVA_OPTIONS,但它似乎并没有做任何事情。
任何帮助将不胜感激。
OP愿意找到一个像宽参数的方式来设置编码,而不是通过JSP。 – mob41
Apache Jasper JSP引擎完全控制在这里。 Jetty遵循Apache Jasper JSP引擎生成的Servlet行为和原始输出字节,并将这些字节发送到客户端。 Jetty唯一能做的就是应用'Transfer-Encoding'(分块)或'Content-Encoding'(gzip)。 –
谢谢你,它的工作原理和解释有助于理解它的工作原理。这比没有好。 – gouessej