我需要在我的Java webapp(servlets + JSP,没有使用框架)中使用UTF-8来支持äöå常规芬兰语文本和???特殊情况下的西里尔字母.
我的设置如下:
使用的数据库:MySQL 5.x.
用户主要使用Firefox2,但Opera 9.x,FF3,IE7和谷歌Chrome也用于访问该网站.
怎么做到这一点?
当我查看这个物理编码为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>
和那种工作,网址现在正确显示,但链接不起作用.
当我查看源它似乎使用正确的链接,但错误消息显示它是扩展表示法而不是UTF8.
她的整个报告,所以你可以点击左侧的链接,并在右侧看到结果
http://www.jthink.net/songkong/reports/FixSongsReport00084/FixSongsReport00084.html
即使我复制链接和粘贴它也不起作用,因为链接似乎被粘贴是错误的,虽然它然后纠正自己
我们需要设置tomcat 8容器字符编码的请求和响应ISO-8859-1的UTF-8 intead,设置是什么我们尝试设置如下所述, https://wiki.apache.org/tomcat/FAQ /#的characterEncoding Q1
但这需要创建过滤器等.有没有任何优雅的方式我们可以更改一些配置集,使其适用于容器级别