呈现的JSP标记乱码为UTF-8字符

时间:2017-01-05 10:02:50

标签: java jsp unicode utf-8

我修改了the embedded-jetty project来创建a stand-alone jsp-viewer(一个包含完整源代码的文件)。结果很好,但是在显示包含特殊字形的JSP时存在问题。问题是在传输标记时未设置Content-Type,但渲染的标记是乱码(在view-source或通过curl)。必须使用错误的字符编码读取JSP文件,但使用-Dfile.encoding=UTF-8启动jvm不会执行任何操作。

这些字符串

Butikknavn – et smartere valg
få ekstra fordeler når

变为

Butikknavn â<80><93> et smartere valg
få ekstra fordeler når

编辑:只是说明显而已,内容标题已经设置,从原始HTTP响应中可以看出

Content-Type:text/html;charset=utf-8

2 个答案:

答案 0 :(得分:1)

你必须添加

<%@ pageEncoding="UTF-8"%>

到JSP文件中。

-Dfile.encoding=UTF-8应该为整个Jetty实例执行pageEncoding="UTF-8"部分,遗憾的是,正如您所提到的,它没有。您也可以尝试将<page-encoding>UTF-8</page-encoding>添加到web.xml(如here所述),但我从未尝试过。

答案 1 :(得分:0)

您的HTTP响应可能缺少内容类型标头。尝试按如下方式添加一个:

Content-Type: text/html; charset=utf-8