admin 管理员组文章数量: 1086019
2024年4月19日发(作者:jetbrains2022激活)
J2ee国际化应用utf-8解决方案笔记
到现在为止, 陆续接触了几个项目, 这几次都使用了不同的编码, 感觉在国际化时, 中文问
题上屡屡碰到问题, 每次都需要费点时间, 现在抽点时间总结一下, 也为同事以及以后的项
目提供一些参考。(utf-8是unicode的一种编码表现形式, 他能很好的兼容单字节编码格式)
项目名称
Webuniverse
前台jsp编码, 显示
UTF-8, GB2312, GBK
混合使用
UTF-8
Class类
Unicode
Unicode
Unicode
数据库
ISO-8859-1
IOS-8859-1
UTF-8
BookManagement GB2312
Workflow
1. 字符集
首先简要介绍一下字符集的概念, 这部分是从网上整理而来:
1.1. 单字节字符集
ASCII码,它以8bit字节为单位存储,0-31及127为控制符,32-126为可见字符, 128-255
的ASCII码则没有定义。 为美国所使用。
ISO-8859-1是ASCII扩展到0-255的范围形成的。为西欧所扩展。
1.2. 双字节字符集
GB2312第一个字节大于127,则使用两个字节来组成一个汉字。若小于127, 仍用一个字节
来表示ASCII码定义的字符。
GBK 保持与GB2312兼容, 并含繁体中文字,日文字符和朝鲜字符。GBK是现阶段Windows
及其他一些中文操作系统的缺省字符集。
BIG5(台湾) SJIS(日本) 这两种编码与GB2312类似, 但扩展ASCII码的那部分编码方式是
不一样的。
1.3. 多字节字符集
Unicode 定义了31位的字符集, 现在基本上只使用了16位子集。U+0000 到 U+007F 与
ASCII 是一致的, U+0000 到 U+00FF 与 ISO 8859-1也是一致的。但每个字符都用16bit
来保存。
UTF-8是Unicode的一种表达方式, 它即兼容了单字节字符集, 又以一种组码方式实现了所
有的字符集。另外单字节字符不可能成为多字节字符的一部分。
2. 中文字符乱码的原因
2.1. 要注意编码的地方
下面是我实践加理解整理出来的东西, 也可能会有严重错误, 希望大家不啻指教。
2.1.1. jsp页面
JSP编码格式
保存jsp页面的时候, 我们可以指定各种格式, 比如GBK, utf8等等。
读取和编译时, <%@ page contentType="text/html;charset=UTF-8"%> 用来指定容器是以什么
格式读取这个jsp页面的。不指定的话, 容器会获取操作系统的ng, 比如中文操作
系统为GBK, 存成Unicode格式。然后容器会把它编译成Unicode编码的class类。
页面显示格式
它表示强制浏览器编码设为gb2312。这个设定对网页交互很有关系, 你设定了什么编码, 之
后你提交的请求就会按照这种编码格式来编码发送。比如,
post一个用户名:
utf-8下会发送:
name=松然
name=%E6%9D%BE%E7%84%B6
name=%CB%C9%C8%BB GB2312下发送:
Tomcat默认总是使用ISO-8859-1, 这就是说你用GBK编码的中文传到tomcat中, 在servlet
里默认输出n()总会得到乱码。
容器参数接收
如上面所提的, 参数的传递方式跟页面显示编码的设定有关。那服务器端又是如何处理参数
版权声明:本文标题:Jee应用中文乱码问题解决方案(精品) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1713487415a637134.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论