为什么UTF-8编码的字符仅在远程计算机上无法正确显示

Pau*_*lor 5 html tomcat utf-8

当我查看这个物理编码为UTF-8并且在我的PC上使用UTF-8指定为charset(使用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>
Run Code Online (Sandbox Code Playgroud)

和那种工作,网址现在正确显示,但链接不起作用.

当我查看源它似乎使用正确的链接,但错误消息显示它是扩展表示法而不是UTF8.

她的整个报告,所以你可以点击左侧的链接,并在右侧看到结果

http://www.jthink.net/songkong/reports/FixSongsReport00084/FixSongsReport00084.html

即使我复制链接和粘贴它也不起作用,因为链接似乎被粘贴是错误的,虽然它然后纠正自己

ric*_*dtz 6

您的页面返回此标头:

内容类型:text/html的; charset = ISO-8859-1

但您的页面以UTF-8编码.

您可以按照此主题查看如何更改响应标头:

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

[编辑]

第二个问题涉及您的服务器希望编码的URL的编码.

由于它们将使用utf-8编码,您可以使用以下命令更新tomcat配置:

<Connector port="<whatever>" URIEncoding="UTF-8"/>
Run Code Online (Sandbox Code Playgroud)

但我强烈建议不要在你的网址和html文件名中使用这种字符.这里涉及的内容更多,因为用户在服务器启动时使用的编码......以及您需要注意的更多调整.只是避免使用这些字符会让你远离这些问题.

[/编辑]

希望能帮助到你.