java对中文字符乱码处理
来源:互联网 发布:淘宝女装主图背景图片 编辑:程序博客网 时间:2024/04/28 22:07
先转载一个博客链接,这里面有Java处理字符编码的各种方法:
点击打开链接
下面介绍一下乱码的根本原因:
大家都知道,字符集有很多种,ASCII,Unicode,utf-8,GBK,GB2312,ISO889-1等等等等,这些字符有什么区别相信各位都能在网上查到详细的说明,这里只说一点,GB2312是Windows中文版默认的字符集(未进行确认),而且GBK是兼容GB2312的。
乱码本质:
1. 只有在字符串转化为字节数组(或者字节数组变为字符串)时才需要用到字符集
2. 在内存中(一般是字符串变量或字符串对象状态)是什么内容就是什么内容(包括中文,和编码无关)
3. 乱码的根本原因是字符串转化为字节数组和字节数组转化为字符串时使用的字符集不同。
下面给大家详细叙述:
1.存储在硬盘上的字符:
如上图所示,当“中国”两个汉字存储到硬盘时,会以字节的形式存储(也就是二进制形式存储),“中”字在“utf-8”字符集中对应的二进制是“0xE4B8AD”,“国”字在“utf-8”字符集中对应的二进制是“0xB9FA”,如果按照“GBK”字符集对应,“0xE4B8AD”对应的字符是”涓”,而“0xB9FA”在“GBK”中对应的字符是:“浗”,所以,按照“utf-8”字符集编码写入硬盘的字符“中国”按照“GBK”字符集解码出来的字符串就是“涓浗”,这就是硬盘乱码的原因。
2.在网络上传输的字符:
其实在网络上传输字符和以硬盘类似,一个是以网络为媒介,一个是以网络为媒介。
如上图所示,当发送方将“中国”两个汉字发送到网络上时,字符串会以字节的形式存储(也就是二进制形式存储),“中”字在“utf-8”字符集中对应的二进制是“0xE4B8AD”,“国”字在“utf-8”字符集中对应的二进制是“0xB9FA”,如果按照“GBK”字符集对应,“0xE4B8AD”对应的字符是”涓”,所以发送方传输到网络的值为“0xE4B8AD0xB9FA”,而“0xB9FA”在“GBK”中对应的字符是:“浗”,所以,按照“utf-8”字符集编码发送到网络上的字符“中国”接收方按照“GBK”字符集接收到的字符串就是“涓浗”,这就是在网络传输时乱码的原因。
3.重复一下乱码解决的根本方法:
1. 只有在字符串转化为字节数组(或者字节数组变为字符串)时才需要用到字符集(字节数组和硬盘上存储的或网络上传输的信息相对应,可以理解为 是相同的)
2. 在内存中(一般是字符串变量或字符串对象状态)是什么内容就是什么内容(包括中文,和编码、字符集无关,在这里不用引起乱码,只有当按照某个字符集进行转化时,才可能导致乱码)
3. 乱码的根本原因是字符串转化为字节数组和字节数组转化为字符串时使用的字符集不同,如果双方参照的字符集相同,就不会出现乱码,也正是解决乱码的根本所在(硬盘:在存储时和在读取时使用相同的字符集,网络:在发送时和接收时使用相同的字符集)。
- java对中文字符乱码处理
- java下载文件名中带有中文字符乱码的处理
- Java处理中文乱码
- Java中文乱码处理
- Java中文乱码处理
- java中文乱码处理
- java 中文乱码处理
- Java处理中文乱码
- 对java处理tomcat中文乱码问题的理解
- 处理 HttpURLConnection的字符流中文乱码
- 中文字符,汉字处理,避免乱码
- URL 中文 特殊字符 乱码处理
- URL中文乱码及特殊字符处理
- java中文内部乱码处理
- JAVA处理中文乱码问题
- Java 中文乱码的处理
- java中的中文乱码处理
- java web中文乱码处理
- 关于伺服的三种控制方式
- 140 - Bandwidth(排列(带宽问题))
- j2ee笔试
- FreeBSD9.2 amd64 xorg kde 虚拟机与实体机安装笔记
- 阿斯顿的仨
- java对中文字符乱码处理
- 什么是WEB
- 如何成为一名优秀的web前端工程师(前端攻城师)
- 如何从原有的表中创建一个新表,并增加几个字段?
- CreateFile在串口中的运用
- 能够发射点后果法合金钢
- 大家可是风景画感个合金钢
- hdu 3829 Cat VS Dog (二分匹配 求 最大独立集)
- 简单BufferedReader