Encoding Jetty 9,字符编码UTF-8

Encoding Jetty 9,字符编码UTF-8,encoding,utf-8,jetty,character,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的元标记

我在编码和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" %>
在另一个线程中建议启动jetty时使用JAVA_选项,但它似乎没有任何作用


任何帮助都将不胜感激。

看起来您只是缺少了
pageEncoding
属性


在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>

EN
UTF-8

希望这有帮助。

OP愿意找到一种像宽参数一样的方法来设置编码,但不是通过JSP。Apache Jasper JSP引擎在这里完全控制。Jetty只是遵循ApacheJasperJSP引擎生成的servlet行为和原始输出字节,并将这些字节无干扰地发送给客户机。Jetty对该输出所能做的唯一事情就是应用
传输编码
(分块)或
内容编码
(gzip)。谢谢,它是有效的,解释有助于理解它为什么有效。总比没有好。
<locale-encoding-mapping>
  <locale>en</locale>
  <encoding>UTF-8</encoding>
</locale-encoding-mapping>