设为首页 收藏本站
查看: 794|回复: 0

[经验分享] tomcat交互中编码细节

[复制链接]

尚未签到

发表于 2017-1-23 11:02:12 | 显示全部楼层 |阅读模式
Java 虽然是采用 Unicode 字符的。但是在网络通信中,都是采用字节进行传输的,由于在传输时并没有告之 tomcat 使用什么编码,那么 tomcat 就会使用 ISO8859-1 的编码格式进行传输。

举个例子吧,比如我们要传输的字符串是“劳动节快到了”,这个串的 GBK 编码为:

c0cd b6af bdda bfec b5bd c1cb (GBK 是采用两个字节的,这里采用空格进行了分隔)

在网络传输中是以 Big-Endian 方式传送的,也就是一个字节一个字节地传,依次会这样:

c0 cd b6 af bd da bf ec b5 bd c1 cb

在 tomcat 接收到这些字节时,并不知道该如何去组装这些字节,默认就使用一个字节编码的 ISO8859-1 进行编码,得出的字符为:

Java codeÀ  Í  ¶  ¯  ½  Ú  ¿  ì  µ  ½  Á  Ë
c0 cd b6 af bd da bf ec b5 bd c1 cb


这很明显是不正确的,但是我们如果使用传输之前的编码进行组装的话,编码器就会根本字符集的特征将这些字节组装并编码成字符串了。像上面这个如果使用 new String(s.getBytes("ISO-8859-1"), "GBK") 的话,就会两个字节,两个字节的进行组装:

Java code 劳   动   节   快   到   了
c0cd b6af bdda bfec b5bd c1cb

页面传输时到达时是gbk编码的字节数组!如果传到Servlet,默认是用Iso对字节数组组装,这时会出现乱码!如果设置request.setCharactorEncoding这时就用特定的编码进行组装!!   

如果对编码格式熟悉的话,出现了乱码,那基本上只要看一下这个乱码的特征就会知道什么地方转码出现了错误。比如:

* 出现一些稀奇古怪的符号(没有一个是汉字的),这一般是 GBK 或者 UTF-8 采用 ISO8859-1 进行显示了。
* 如果出现稀奇古怪的符号,并夹杂着一些繁体或者简体汉字的话,这一般是 GBK 与 UTF-8 转码出现了错误。如果出现的字符数比原字符数多的话,那表明本该 UTF-8 的字符采用 GBK 进行转码了,如果出现的字符数比原字符数少的话,那表明本该 GBK 的字符采用 UTF-8 进行转码了

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-332457-1-1.html 上篇帖子: Tomcat配置虚拟主机方法 下篇帖子: tomcat 配置 Eclipse debug地址
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表