求助,JSP中直接写中文乱码

bakuumeo 发布于 2012/07/14 00:35
阅读 1K+
收藏 0

test.jsp

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

<%@ page contentType="text/html; charset=UTF-8" %>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

 

...

<li>中文汉字</li>

...

 

http://localhost:8080/test/test.jsp

打开乱码。

从数据库中取出来的中文数据不乱码。

查看:

tomcat中生成的java文件 test_jsp.java

      _jspxFactory = JspFactory.getDefaultFactory();
      response.setContentType("text/html; charset=UTF-8");

 

        out.write("\t\t\t\t\t\t\t\t\t\t\t<li>中文汉字</li>\r\n");

 

正常,

但从浏览器一打开叶面便是乱码。

请问各位大虾,什么原因?

加载中
1
高雷
高雷
在Eclipse中右击jsp文件 - Properties - Resource - TextFile encoding 
查看是否为UTF-8编码
这个编码是  jsp文件 存储的编码

--------详细说明---------

使用Eclipse中加入这一行
<%@ page contentType="text/html; charset=UTF-8" %>
Eclipse会自动转换编码为UTF-8进行存储
(如果是记事本之类的,需要手动调编码哦)

既然 文件存储时 用UTF-8编码
那么打开时也应该用相同的编码吧

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

告诉浏览器是 UTF-8编码

至些只需如此两步,一切乱码统统搞定
bakuumeo
bakuumeo
谢谢! 1)确认JSP是UTF-8编码,当然重新打开也是utf-8编码不乱码。 2)Eclipse中确认也有这一行 3)数据库编码确认为utf-8,数据库中数据取出来显示不乱码 3)头部也设置了meta tag,设置为utf-8编码。 我检查过tomcat为jsp生成的java文件,打开也不乱码 应该是tomcat编译的时候编码出错了。 有何高见?
0
bakuumeo
bakuumeo
补充一点:JSP文件 编码正确,确认过为utf-8编码。
0
jeffsui
jeffsui

你建立的工程是utf-8编码吗?

数据库连接使用utf-8编码了吗?

bakuumeo
bakuumeo
工程是utf-8编码的
0
布谷鸟
布谷鸟
如果是eclipse之类,要设置下,如楼上所说
0
黄龍
黄龍

1.换个浏览器试试

2.换个tomcat试试

0
JustForFly
JustForFly
看看你游览器打开你的页面时,自动选择是什么编码。
0
高雷
高雷

引用来自“高雷”的答案

在Eclipse中右击jsp文件 - Properties - Resource - TextFile encoding 
查看是否为UTF-8编码
这个编码是  jsp文件 存储的编码

--------详细说明---------

使用Eclipse中加入这一行
<%@ page contentType="text/html; charset=UTF-8" %>
Eclipse会自动转换编码为UTF-8进行存储
(如果是记事本之类的,需要手动调编码哦)

既然 文件存储时 用UTF-8编码
那么打开时也应该用相同的编码吧

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

告诉浏览器是 UTF-8编码

至些只需如此两步,一切乱码统统搞定

以Chrome为例说明,按F12, 然后刷新网页,NetWork-查看的网页-Headers -  Response headers

如下图所示,查看接收到的编码是否为UTF-8

 

bakuumeo
bakuumeo
谢谢再次回答。查看了,这个也没问题。 Content-Language:ja Content-Length:13531 Content-Type:text/html;charset=UTF-8 同一个叶面需要显示多个语言。
0
softsword
softsword

tomcat服务器是默认是utf-8吗?

不是的话修改conf/server.xml

bakuumeo
bakuumeo
谢谢。可能不是tomcat的问题,新建了一个简单的测试项目,用一个简单的jsp试验了一下。中间的中文可以显示。但一到这个项目就不行。JSP叶面的写法都一样。
0
鎕_鎕
鎕_鎕

 

@1-找到Tomcat目录下的 SetCharacterEncodingFilter.class文件

C:\apache-tomcat-6.0.35\webapps\examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.class

@2.复制到本项目下\webapp\WEB-INF\classes – 新建filters文件(没有该文件夹建一个)-复制SetCharacterEncodingFilter.class文件就OK

 

C:\workspace\test(你的项目)\weRoot\WEB-INF\classes\filters\ SetCharacterEncodingFilter.class

bakuumeo
bakuumeo
SetCharacterEncodingFilter已经设置好了。form提交时没有问题。纯粹JSP显示问题,直接在JSP里写 中文汉字 的时候 显示乱码。
0
bakuumeo
bakuumeo

原因已经查明:

楼上各位都没错。
原因在于ehcache缓存上面,没有用ehcache缓存的叶面不乱码,

缓存过的叶面取出来之后乱码。
(而且OS默认编码的不乱码,其他文字乱码)

解决方法不明,还比较纠结。

返回顶部
顶部