5

当我查看这个物理编码为 UTF-8 并将 UTF-8 指定为我的 PC 上的字符集(使用 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

即使我复制链接并粘贴它也不起作用,因为链接似乎粘贴是错误的,尽管它随后会自行纠正

4

1 回答 1

6

您的页面正在返回此标题:

内容类型:文本/html;字符集= ISO-8859-1

但是您的页面是用 UTF-8 编码的。

您可以关注此线程以查看如何更改响应标头:

Tomcat 7.0.35 为静态 HTML 文件设置 HTTP 响应标头 Content-Type 字符集

[编辑]

第二个问题与您的服务器期望对 url 进行编码的编码有关。

由于它们将使用 utf-8 进行编码,因此您可以使用以下内容更新您的 tomcat 配置:

<Connector port="<whatever>" URIEncoding="UTF-8"/>

但我强烈建议不要在你的 url 和 html 文件名中使用这种字符。这里涉及到更多的事情,如服务器启动时用户正在使用的编码......以及您需要注意的更多调整。只是避免使用这些字符将使您远离这些问题。

[/编辑]

希望能帮助到你。

于 2013-09-19T16:00:22.260 回答