当我查看这个物理编码为UTF-8且在我的电脑上使用指定为字符集的UTF-8(使用firefox)的网页时,它不会显示需要正确编码多个字节的字符,例如ö在Björk,请点击链接,然后打开B部分看看我的意思
http://www.jthink.net/songkong/reports/FixSongsReport00084/FixSongsReport00084_index.html
(该页面使用jakarta-tomcat托管在linux服务器上)
然而,当我的硬盘存储为文件时,原始文件在Firefox中显示完全正常。我甚至将文件从远程站点复制回我的本地PC,以确保文件相同,但仍然可以显示。
那怎么会在网站上显示不好,这可能是一个tomcat问题吗?
修改 在第一个答案的评论中,它说我需要确保我需要正确设置响应编码,我该怎么做 - html页面不是由代码生成的tomcat只是按提供的方式提供页面
注意我不要将uri参数解析为utf8,并且我不希望我创建的jsp页面编码为UTF8,这些作为ISO-8859-1罚款,如果我更改它们可能会中断。我只想将.html页面显示为UTF8,并且仅针对此应用程序,我在webapps文件夹中有多个应用程序,我使用的是Tomcat 7
修改
正如下面的答案所示,我已添加到我的web.xml文件
<filter>
<filter-name>CharacterEncoding</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html;charset=UTF-8</mime-type>
</mime-mapping>
和那种工作,网址现在正确显示,但链接不起作用。
当我查看源代码时,似乎正在使用正确的链接,但错误消息将其显示为扩展符号而不是UTF8 。
她的整个报告,所以你可以点击左侧的链接,在右侧看到结果
http://www.jthink.net/songkong/reports/FixSongsReport00084/FixSongsReport00084.html
即使我复制链接并粘贴它也不起作用,因为链接似乎被粘贴是错误的,虽然它然后纠正自己
答案 0 :(得分:6)
您的页面正在返回此标题:
的Content-Type:text / html的;字符集= <强> ISO-8859-1 强>
但您的网页采用UTF-8编码。
您可以按照此主题查看如何更改响应标头:
Tomcat 7.0.35 set HTTP response header Content-Type charset for static HTML files
<强> [编辑] 强>
第二个问题涉及您的服务器希望编码的网址编码。
由于它们将使用utf-8进行编码,您只需使用以下命令更新tomcat配置:
<Connector port="<whatever>" URIEncoding="UTF-8"/>
但我强烈建议不要在你的网址和html文件名中使用这种字符。这里涉及的内容更多,因为用户在服务器启动时使用的编码......以及您需要注意的更多调整。只是避免使用这些字符会让你远离这些问题。
<强> [/ EDIT] 强>
希望它有所帮助。