参考资料:
java 类里判断字符串是iso-8859-1还是gb2312,utf-8,gbk等,判断编码类型
1、判断字符串编码类型
System.out.println(java.nio.charset.Charset.forName("GB2312").newEncoder().canEncode("汉字"));
System.out.println(java.nio.charset.Charset.forName("ISO-8859-1").newEncoder().canEncode("汉字"));
结果:
true
false
GBK、GB2312、UTF-8里边都有汉字编码,所以判断时总是返回true.
2、字符集顺序
从小到大:
ISO-8859-1、GB2312、GBK、UTF-8
国际标准组织(ISO)定义了几个不同的字符集,它们是在ASCII码基础上增加了其他语言和地区需要的字符。
其中最突出的是ISO-8859-1,通常叫做Latin-1. Latin-1包括了书写所有西方欧洲语言不可缺少的附加字节,其中0~127的字符与ASCII码相同。
3、获取某个字符或汉字在utf-8,gbk,gb2312,iso8859-1下的十六进制,八进制,十进制,二进制的表示
参考资料:字符在utf-8,gbk,gb2312,iso8859-1下的编码实验
4、字符编码在计算机中真正的表示形式?
二进制
5、ISO-8859-1
iso-8859-1是JAVA网络传输使用的标准字符集,而gb2312是标准中文字符集,
当你作出提交表单等需要网络传输的操作的时候,就需要把 iso-8859-1转换为gb2312字符集显示,否则如果按浏览器的gb2312格式来解释iso-8859-1字符集的话,由于2者不兼容,所以会是乱码.
6、GB2312
简体中文编码标准。
对于GB2312,汉字是双字节的。所谓双字节是指一个双字要占用两个Byte的位置(即16位),分别称为高位和低位。
中国规定的汉字编码为GB2312,这是强制性的,目前几乎所有的能处理中文的应用程序都支持GB2312。
GB2312包括了一二级汉字和9区符号,高位从0xa1到0xfe,低位也是从0xa1到0xfe,其中,汉字的编码范围为0xb0a1到0xf7fe。
汉字的另外一种编码方式:GBK
GBK编码方式是一份规范,不是强制的(GB2312为强制性编码方式)。GBK提供了20902个汉字,它兼容GB2312,编码范围为0x8140到0xfefe。GBK中的所有字符都可以一一映射到Unicode 2.0.
7、GBK
因为GB2312只有简体字,为了扩充,便有了GBK编码标准。它是GB2312的超集。也就是说,GB2312编码的字符,都可以用GBK的方式解读。Windows默认字符集为GBK。
GBK编码方式是一份规范,不是强制的(GB2312为强制性编码方式)。GBK提供了20902个汉字,它兼容GB2312,编码范围为0x8140到0xfefe。GBK中的所有字符都可以一一映射到Unicode 2.0.
8、UTF-8、UTF-16、Unicode编码形式
Utf-8是8bit的,UTF-16是16bit,Unicode是UTF-16的形式。
UTF-16 或 Unicode 是 16-bit 固定长度的编码,并没有比 Big5 或 GB2312 码提供更大的容纳空间。
而 8-bit 不定长 (variable-length) 的编码,每个中文字使用 3 个位元组 (byte)。 这意味着使用 UTF-8 编码的 XML 文件会比使用 Big5 码的文件大上 50%。但是假如使用 ASCII 码的标示 (Markup),文件就不会大这么多了。 标示大约会占文件的 50%。可能要使文件大小减少的方式就是採用 文件压缩了。
9、GB2312、UTF-8中,汉字分别占多少字节?
GB2312中,汉字占2字节。
UTF-8编码中,占3字节(3位元组)。
10、ISO-8859-1和GB2312之间的转换
通常异种语言之间的转换是通过Unicode来完成的。
假设有两种不同的语言A和B,转换的步骤为:
先把A转化为Unicode,再把Unicode转化为B。
Eg:
有GB2312中有一个汉字“李“,其编码为“C0EE”,欲转化为ISO8859-1编码。
步骤为:
1)、把“李”字转化为Unicode,得到 “674E”,
2)、把“674E”转化为ISO8859-1字符。
当然,这个映射不会成功,因为ISO8859-1中根本就没有与“674E”对应的字符。
11、浏览器表单提交内容乱码的原因?
iso-8859-1是JAVA网络传输使用的标准字符集,而gb2312是标准中文字符集,
当你作出提交表单等需要网络传输的操作的时候,就需要把 iso-8859-1转换为gb2312字符集显示,否则如果按浏览器的gb2312格式来解释iso-8859-1字符集的话,由于2者不兼容,所以会是乱码.