`
daiming253685
  • 浏览: 23135 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

JSP中文乱码问题

阅读更多

1、很显然我们使用get或post方法传送数据时,用的是机器上的默认编码,在中文系统中使用的是gb2312,那么我们应该设置request.setCharacterEncoding("UTF-8"),将传送过来的编码转换为UTF-8的编码,则在显示的时候就不会显示为乱码了,
因为我的eclipse是使用的UTF-8方式显示的,那么这样就能避免乱码问题。
2、而我们在<%@ page pageEncoding="UTF-8"%>中设置的只是对当前的jsp文件在硬盘中的保存编码。
3、在我看来当我们没有指定一个页面的编码时默认为系统默认的编码,在转换为
UTF-8时会发生错误。
4、get 方法 是使用的ISO-8859_1 编码发送的,通过服务器中的URIEncoding="UTF-8" 我们把它转换为了UTF-8编码,但是我们在以UTF-8接受时有些汉字还是会出现问题,有待解决中。。。
5、解决中文乱码问题最有效的途径是 :将传过来的字符以当前默认的编码编码为字节数组,然后将字节数组再解码为我们需要的字符;例如:中文字符串 str
可以这样出来 str = new String(str.getBytes("ISO-8859-1"),"gb2312")。
6、在内存中各种字符都是以byte 的形式存储的,再输入设备输入字符时,将其以平台默认的字符集将其编码为字节,并存储;而输出时将根据字符集中的字符输出,如果我们将一个字符以一种字符集编码,则输出时系统将根据这种字符集中对应的字符输出,这样我们就能看到字符了,如果字符集中不存在相应的字符则显示为乱码。各种字符集之间的解码方式不同而且编码也不相同。
7、所谓的解码,是将以一种字符集编码的字节序列,解释为以另一种字符集编码的字节序列。每种字符集中的字符编码不尽相同。

 


8、JSP页面中文乱码终极解决:
   * 因为在IE6中URI是以ISO8859-1发送的;
   * 在服务器端接受了中文参数后,很难正确的转换
   * 特别是以URI重写的方式,以<a>标签进行页面的跳转时,即使你是以UTF-8的字符形式发送的中文字符,在服务端也是无法解析的
   * 解决办法:
         # 将要使用的中文字符在服务器端使用URLEncoder进行编码为UTF-8的形式;
         # 注意在服务器端接受参数的时候我们也无法用URLDecoder进行解码,因为此时的编码是ISO8859-1的,无法解码为UTF-8的
         # 只有将参数按照ISO8859-1编码形式编码为字符序列,此时才能将字符序列平台无关的转换为UTF-8

2
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics