java 字符编码 解码 转码 识别编码
来源:互联网 发布:网络爬虫需要什么软件 编辑:程序博客网 时间:2024/06/05 00:31
首先编码规则就不介绍了,可以百度。
1、字符的编码:new String(byte[] ,CharSet);
根据:相应的编码规则,比如GBK是两个字节编码一个字符,那么将字节数组,每两个一个单位
翻译成一个数字,在用这个数字查找GBK的字符集,[C4,E3]在GBK中表示的汉子“你”。
new String([c4 e3],"gbk"):你
new String([e4 bd a0],"utf-8"):你
new String([c4 e3],"gb2312"):你
new String([3f],"iso8859-1"):<?>
2、字符的解码:
根据:与编码的规则相反,比如我们看到一个字符“你”,是用GBK编码过后显示的字符,那么我们在字符集中找到
“你”对应的数字XXX([C4,e3]),然后在根据GBK的编码方式,将XXX翻译成[C4,E3].然后我们就得到了C4,E3,.就
对“你”进行了解码
String source = "你";(该字符是写在GBK的文本文件中)
source.getBytes("gbk"):c4 e3
source.getBytes("utf-8"):e4 bd a0
source.getBytes("gb2312"):c4 e3
source.getBytes("iso-8859-1"):3f(表示没有相应的字符想对应)
3、字符转码:
1、首先我们要知道字节序列的编码方式。目前java有一个开源的项目cpdetector可以自动探测编码方式。
2、然后我们要根据字节序列和相应的编码方式“编译”成相应的字符。
3、在根据2步中字符在需要转换成的字符集中查找相应的“数字”(比如[gbk]“你”(C4E3),[UTF-
8]"你"((E4,BD,A0)),他们之间的转码需要“你”这个汉子作为一个桥梁
4、找到了目标编码的字节,也知道了目标的字符编码方式。
5、创建一个新的字符 new String(目标字节数组,目标字符集)
说明:1、字符转码是需要条件的
2、不是任意的字符都能成功转换成另一种字符
条件:1、需要被转换的源字符编码必须正确(字节序列和字符的编码必须确定)
因为确少一个就可能导致源字符就不正确,这样转码是不能成功的
2、比如在GBK 的字符要转换成 iso-8859-1 ,这明显就是不能成功的,因为在ISO-8859-1
中就没有gbk的字符。GBK 与utf-8之间就能正确装换,因为他们之间有共同的字符。
自动探测字节序列的编码:
这个思路是,只能根据每一种编码规则去解析字节序列,如果用这种编码规则能正确解析所有的字节序列
那么他就有可能是这一种编码。---只是有可能。比如用这种编码规则能够保证“编译”成字符是能够成功
但是和我们看到的结果就可能又差距,比如出现了我们不认识的字符。但是这样我们也不能判断这个规则是
1、字符的编码:new String(byte[] ,CharSet);
根据:相应的编码规则,比如GBK是两个字节编码一个字符,那么将字节数组,每两个一个单位
翻译成一个数字,在用这个数字查找GBK的字符集,[C4,E3]在GBK中表示的汉子“你”。
new String([c4 e3],"gbk"):你
new String([e4 bd a0],"utf-8"):你
new String([c4 e3],"gb2312"):你
new String([3f],"iso8859-1"):<?>
2、字符的解码:
根据:与编码的规则相反,比如我们看到一个字符“你”,是用GBK编码过后显示的字符,那么我们在字符集中找到
“你”对应的数字XXX([C4,e3]),然后在根据GBK的编码方式,将XXX翻译成[C4,E3].然后我们就得到了C4,E3,.就
对“你”进行了解码
String source = "你";(该字符是写在GBK的文本文件中)
source.getBytes("gbk"):c4 e3
source.getBytes("utf-8"):e4 bd a0
source.getBytes("gb2312"):c4 e3
source.getBytes("iso-8859-1"):3f(表示没有相应的字符想对应)
3、字符转码:
1、首先我们要知道字节序列的编码方式。目前java有一个开源的项目cpdetector可以自动探测编码方式。
2、然后我们要根据字节序列和相应的编码方式“编译”成相应的字符。
3、在根据2步中字符在需要转换成的字符集中查找相应的“数字”(比如[gbk]“你”(C4E3),[UTF-
8]"你"((E4,BD,A0)),他们之间的转码需要“你”这个汉子作为一个桥梁
4、找到了目标编码的字节,也知道了目标的字符编码方式。
5、创建一个新的字符 new String(目标字节数组,目标字符集)
说明:1、字符转码是需要条件的
2、不是任意的字符都能成功转换成另一种字符
条件:1、需要被转换的源字符编码必须正确(字节序列和字符的编码必须确定)
因为确少一个就可能导致源字符就不正确,这样转码是不能成功的
2、比如在GBK 的字符要转换成 iso-8859-1 ,这明显就是不能成功的,因为在ISO-8859-1
中就没有gbk的字符。GBK 与utf-8之间就能正确装换,因为他们之间有共同的字符。
自动探测字节序列的编码:
这个思路是,只能根据每一种编码规则去解析字节序列,如果用这种编码规则能正确解析所有的字节序列
那么他就有可能是这一种编码。---只是有可能。比如用这种编码规则能够保证“编译”成字符是能够成功
但是和我们看到的结果就可能又差距,比如出现了我们不认识的字符。但是这样我们也不能判断这个规则是
错误的。所以:自动探测的结果不一定是我们预期的。
说明:个人见解。
- java 字符编码 解码 转码 识别编码
- Java字符编码解码
- java字符解码与编码
- Java中的字符编码与解码(转)
- Java中的字符编码与解码
- JAVA 种的字符编码和解码
- java 字符的解码和编码
- 字符编码,解码
- 字符编码和解码
- 字符编码与解码
- 字符编码 与 解码
- python字符编码解码,文件编码解码。
- Java字符的编码解码与乱码问题 Java字符的编码解码与乱码问题
- 如何识别字符编码
- js 编码解码 与 java编码解码
- js 编码解码 与 java编码解码
- python之字符编码解码
- 字符的编码与解码
- 河南科技学院嵌入式/3G讲座
- 河南科技学院CSDN俱乐部参观百度豫北代理
- linux进程(fork,waitpid)
- list<javabean>集合
- The Complete (?) List Of Cocos2D Tools
- java 字符编码 解码 转码 识别编码
- InstallShield中Basic MSI工程类型如何调用InstallScript脚本
- 深刻理解Linux进程间通信
- 戴尔电脑不能装XP的解决方法
- 手动控制IIS服务的开启与关闭
- 基于API的录音机程序(转)
- 自定义Android标题栏TitleBar
- int 和 String 互相转换的多种方法
- libssh2编译错误(configure error: cannot find OpenSSL or Libgcrypt)解决方法