Character encoding Jetty字符编码问题

Character encoding Jetty字符编码问题,character-encoding,jetty,Character Encoding,Jetty,我面临jetty字符编码的问题。在Mac(OSX)上安装jetty服务器时,它工作正常。但是,当它安装在Ubuntu(10.10)上时,字符编码是不正确的 页面中出现问题的单词(不是URL)是:纽约时报®畅销书 它在Linux服务器提供的页面上显示为“纽约时报”的畅销书 在Mac上服务器提供的页面上显示为“纽约时报®畅销书”(这是正确的) jetty服务器版本为:hightide-7.0.2.v20100331 所服务文件的字符编码为:UTF-8 如果需要更改任何设置以克服此问题,请告诉我 提前

我面临jetty字符编码的问题。在Mac(OSX)上安装jetty服务器时,它工作正常。但是,当它安装在Ubuntu(10.10)上时,字符编码是不正确的

页面中出现问题的单词(不是URL)是:纽约时报®畅销书

它在Linux服务器提供的页面上显示为“纽约时报”的畅销书

在Mac上服务器提供的页面上显示为“纽约时报®畅销书”(这是正确的)

jetty服务器版本为:hightide-7.0.2.v20100331

所服务文件的字符编码为:UTF-8

如果需要更改任何设置以克服此问题,请告诉我


提前谢谢

明白了;对我来说,它缺少JSP的编码头:

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

我在jetty 8上遇到了类似的问题,通过将这一行添加到bin/jetty.sh中解决了这个问题:

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

我也遇到过这样的问题,我要感谢阿迪苏的回答

我在ubuntu 12.04(和14.04)上的Jetty服务器上使用restlet。restlet应用程序位于Apache服务器后面,该服务器充当proxyPass

所有文件都是UTF-8。
所有HTTP响应都具有内容类型text/html;字符集=UTF-8。
所有文件都包含

奇怪的是,当服务器启动时,我访问了这个站点,字符编码不是UTF-8,所以我得到了所有这些有趣的字符。即使所有信号都告诉服务器和代理以及介于两者之间的所有内容,UTF-8也被反编码使用

当我在服务器启动后手动重新启动服务时,所有字符都正常。因为我不能很容易地找到答案,而且我不知道是谁导致了这个错误的编码,所以我一直手动重新启动服务

当时我的候选对象是:Apache、Ubuntu服务启动顺序、Restlet框架、实际使用的文件编码、HTTP头、HTML元标记。但一切都是它应该是

所以最后是Jetty,我只是在多次重温这个问题之后才考虑的

我仍然不知道为什么在启动时启动会使字符编码完全错误,并且在手动重新启动服务后编码是正确的。添加额外的JAVA参数'-Dfile.encoding=UTF-8'使这一切都消失了。再次感谢aditsu分享他的解决方案

干杯

编辑: 在启动脚本中设置LANG环境变量也可以解决这个问题。即

出口LANG=en_US.UTF-8


实际上,这就是在引导时启动Jetty服务器(LANG不是现成定义的)和从shell启动它之间的区别。对于同一个问题,有两种解决方案。

您可能直接读取原始http编码,需要使用解码器将其解码为utf8

使用java.net.url解码器 line=urldecker.decode(第行,“UTF-8”)

要将文本编码为html字符集,请使用URLEncoder,如将java字符串直接发送到post: line=URLEncoder.encode(第行,“UTF-8”)