字符编码格式
1.ASCII码
我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。
上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。
ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。
2.非ASCII编码
英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用ASCII码表示。于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。比如,法语中的é的编码为130(二进制10000010)。这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号。
但是,这里又出现了新的问题。不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。比如,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel (ג),在俄语编码中又会代表另一个符号。但是不管怎样,所有这些编码方式中,0—127表示的符号是一样的,不一样的只是128—255的这一段。
至于亚洲国家的文字,使用的符号就更多了,汉字就多达10万左右。一个字节只能表示256种符号,肯定是不够的,就必须使用多个字节表达一个符号。比如,简体中文常见的编码方式是GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示256x256=65536个符号。(实际上GB2312一共收录了7445个字符,包括6763个汉字和682个其它符号)。汉字问题稍后讨论。
3.Unicode-所有符号编码
正如上一节所说,世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。
可以想象,如果有一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是Unicode,就像它的名字都表示的,这是一种所有符号的编码。
Unicode当然是一个很大的集合,现在的规模可以容纳100多万个符号。每个符号的编码都不一样,比如,U+0639表示阿拉伯字母Ain,U+0041表示英语的大写字母A,U+4E25表示汉字“严”。具体的符号对应表,可以查询unicode.org,或者专门的汉字对应表。
4.Unicode的问题
需要注意的是,Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。
比如,汉字“严”的unicode是十六进制数4E25,转换成二进制数足足有15位(100111000100101),也就是说这个符号的表示至少需要2个字节。表示其他更大的符号,可能需要3个字节或者4个字节,甚至更多。
这里就有两个严重的问题,第一个问题是,如何才能区别unicode和ascii?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?第二个问题是,我们已经知道,英文字母只用一个字节表示就够了,如果unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,这对于存储来说是极大的浪费,文本文件的大小会因此大出二三倍,这是无法接受的。
它们造成的结果是:1)出现了unicode的多种存储方式,也就是说有许多种不同的二进制格式,可以用来表示unicode。2)unicode在很长一段时间内无法推广,直到互联网的出现。
5.UTF-8
互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF-16和UTF-32,不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8是Unicode的实现方式之一。
UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
UTF-8的编码规则很简单,只有二条:
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。
下表总结了编码规则,字母x表示可用编码的位。
Unicode符号范围 | UTF-8编码方式
(十六进制) | (二进制)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
下面,还是以汉字“严”为例,演示如何实现UTF-8编码。
已知“严”的unicode是4E25(100111000100101),根据上表,可以发现4E25处在第三行的范围内(0000 0800-0000 FFFF),因此“严”的UTF-8编码需要三个字节,即格式是“1110xxxx 10xxxxxx 10xxxxxx”。然后,从“严”的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了,“严”的UTF-8编码是“11100100 10111000 10100101”,转换成十六进制就是E4B8A5。
6.Unicode与UTF-8之间的转换
通过上一节的例子,可以看到“严”的Unicode码是4E25,UTF-8编码是E4B8A5,两者是不一样的。它们之间的转换可以通过程序实现。
在Windows平台下,有一个最简单的转化方法,就是使用内置的记事本小程序Notepad.exe。打开文件后,点击“文件”菜单中的“另存为”命令,会跳出一个对话框,在最底部有一个“编码”的下拉条。
里面有四个选项:ANSI,Unicode,Unicode big endian 和 UTF-8。
1)ANSI是默认的编码方式。对于英文文件是ASCII编码,对于简体中文文件是GB2312编码(只针对Windows简体中文版,如果是繁体中文版会采用Big5码)。
2)Unicode编码指的是UCS-2编码方式,即直接用两个字节存入字符的Unicode码。这个选项用的little endian格式。
3)Unicode big endian编码与上一个选项相对应。我在下一节会解释little endian和big endian的涵义。
4)UTF-8编码,也就是上一节谈到的编码方法。
选择完”编码方式“后,点击”保存“按钮,文件的编码方式就立刻转换好了。
7.Little endian和Big endian
上一节已经提到,Unicode码可以采用UCS-2格式直接存储。以汉字”严“为例,Unicode码是4E25,需要用两个字节存储,一个字节是4E,另一个字节是25。存储的时候,4E在前,25在后,就是Big endian方式;25在前,4E在后,就是Little endian方式。
这两个古怪的名称来自英国作家斯威夫特的《格列佛游记》。在该书中,小人国里爆发了内战,战争起因是人们争论,吃鸡蛋时究竟是从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。为了这件事情,前后爆发了六次战争,一个皇帝送了命,另一个皇帝丢了王位。
因此,第一个字节在前,就是”大尾方式“(Big endian),第二个字节在前就是”小尾方式“(Little endian)。
那么很自然的,就会出现一个问题:计算机怎么知道某一个文件到底采用哪一种方式编码?
Unicode规范中定义,每一个文件的最前面分别加入一个表示编码顺序的字符,这个字符的名字叫做”零宽度非换行空格“(ZERO WIDTH NO-BREAK SPACE),用FEFF表示。这正好是两个字节,而且FF比FE大1。
如果一个文本文件的头两个字节是FE FF,就表示该文件采用大尾方式(人眼观察模式,自左向右高字节在前,低字节在后);如果头两个字节是FF FE,就表示该文件采用小尾方式(与大尾方式相反)。
8.实例
下面,举一个实例。
打开”记事本“程序Notepad.exe,新建一个文本文件,内容就是一个”严“字,依次采用ANSI,Unicode,Unicode big endian 和 UTF-8编码方式保存。
然后,用文本编辑软件UltraEdit中的”十六进制功能“,观察该文件的内部编码方式。
1)ANSI:文件的编码就是两个字节“D1 CF”,这正是“严”的GB2312编码,这也暗示GB2312是采用大头方式存储的。
2)Unicode:编码是四个字节“FF FE 25 4E”,其中“FF FE”表明是小头方式存储,真正的编码是4E25。
3)Unicode big endian:编码是四个字节“FE FF 4E 25”,其中“FE FF”表明是大头方式存储。
4)UTF-8:编码是六个字节“EF BB BF E4 B8 A5”,前三个字节“EF BB BF”表示这是UTF-8编码,后三个“E4B8A5”就是“严”的具体编码,它的存储顺序与编码顺序是一致的。(有时候UltraEdit也不靠谱,我用的10.20b版本对UTF8查看就出问题)。
9.汉字编码
CJK含义
中日韩统一表意文字(CJK Unified Ideographs),目的是要把分别来自中文、日文、韩文、越文中,本质、意义相同、形状一样或稍异的表意文字(主要为汉字,但也有仿汉字如日本国字、韩国独有汉字、越南的喃字)于ISO 10646及Unicode标准内赋予相同编码。CJK 是中文(Chinese)、日文(Japanese)、韩文(Korean)三国文字的缩写。顾名思义,它能够支持这三种文字。实际上,CJK 能够支持在 LaTeX 中使用包括中文、日文、韩文在内的多种亚洲双字节文字。CJK 是《GB2312-80》、《BIG5》等字符集的超集。
Unicode中的汉字
在Unicode 5.0的99089个字符中,有71226个字符与汉字有关。它们的分布如下:
Block名称 |
开始码位 |
结束码位 |
字符数 |
|
CJK统一汉字 |
4E00 |
9FBB |
20924 |
|
CJK统一汉字扩充A |
3400 |
4DB5 |
6582 |
|
CJK统一汉字扩充B |
20000 |
2A6D6 |
42711 |
|
CJK兼容汉字 |
F900 |
FA2D |
302 |
|
CJK兼容汉字 |
FA30 |
FA6A |
59 |
|
CJK兼容汉字 |
FA70 |
FAD9 |
106 |
|
CJK兼容汉字补充 |
2F800 |
2FA1D |
542 |
如果不算兼容汉字,Unicode目前支持的汉字总数是20924+6582+42711=70217。
在早期的Unicode版本中,CJK统一汉字区的范围是0x4E00-0x9FA5,也就是我们经常提到的20902个汉字。当前版本的Unicode增加了22个字符,码位是0x9FA6-0x9FBB。它们是:
那么GB18030是否支持这22个字符?后面还会讨论。
GB2312
1980年的GB2312一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。
这6763个汉字在Unicode中不是连续的,分布在CJK统一汉字字符区(0x4E00-0x9FA5)的20902个汉字中。
GBK
1995年的汉字扩展规范GBK1.0收录了21886个符号,包括21003个汉字和883个其它符号。
这21003汉字包括CJK统一汉字区的20902个汉字。余下的101个汉字包括:
· 增补汉字和部首80个,包括28个部首和52个汉字。GBK编码是从FE50-FE7E,FE80-FEA0。下图标注了Unicode编码。
在制定GBK时,Unicode中还没有这些字符,所以使用了专用区的码位,这80个字符的码位是0xE815-0xE864。后来,Unicode将52个汉字收录到“CJK统一汉字扩充A”。28个部首中有14个部首被收录到“CJK部首补充区”。所以在上图中,这些字符都有两个Unicode编码。
上图中淡黄色背景的8个部首被收录到“CJK统一汉字区”的新增区域,即前面提到的0x9FA6-0x9FBB。还有6个淡灰色背景的部首被Unicode收录到“CJK统一汉字扩充B”(网友slt指正)。
请注意,淡黄色和淡灰色的14个字符按照GB18030还是应该映射到PUA码位。这14个字符与非PUA码位的映射关系只是网友找出来的,不是标准规定的。如果按照GBK编码,这80个字符应该全部映射到PUA码位。GB18030将其中66个字符映射到了非PUA码位。不过在Windows中,简体中文区域的默认代码页还是GBK,不是GB18030。
- CJK兼容汉字区挑选出来的21个汉字。见下表:
汉字 |
GBK编码 |
Unicode编码 |
郎 |
FD9C |
F92C |
凉 |
FD9D |
F979 |
秊 |
FD9E |
F995 |
裏 |
FD9F |
F9E7 |
隣 |
FDA0 |
F9F1 |
兀 |
FE40 |
FA0C |
嗀 |
FE41 |
FA0D |
﨎 |
FE42 |
FA0E |
﨏 |
FE43 |
FA0F |
﨑 |
FE44 |
FA11 |
﨓 |
FE45 |
FA13 |
﨔 |
FE46 |
FA14 |
礼 |
FE47 |
FA18 |
﨟 |
FE48 |
FA1F |
蘒 |
FE49 |
FA20 |
﨡 |
FE4A |
FA21 |
﨣 |
FE4B |
FA23 |
﨤 |
FE4C |
FA24 |
﨧 |
FE4D |
FA27 |
﨨 |
FE4E |
FA28 |
﨩 |
FE4F |
FA29 |
4 GB18030-2000
4.1 字汇
GB18030-2000的字汇部分是这样写的:
本标准收录的字符分别以单字节、双字节和四字节编码。
5.1 单字节部分
本标准中,单字节的部分收录了GB 11383的0x00到0x7F全部128个字符及单字节编码的欧元符号。
5.2 双字节部分
本标准中,双字节的部分收录内容如下:
GB 13000.1的全部CJK统一汉字字符。
GB 13000.1的CJK兼容区挑选出来的21个汉字。
GB 13000.1中收录而GB 2312未收录的我国台湾地区使用的图形字符139个。
GB 13000.1收录的其它字符31个。
GB 2312中的非汉字符号。
GB 12345 的竖排标点符号19个。
GB 2312未收录的10个小写罗马数字。
GB 2312未收录的带音调的汉语拼音字母5个以及ɑ和ɡ。
汉字数字“〇”。
表意文字描述符13个。
增补汉字和部首/构件80个。
双字节编码的欧元符号。
5.3 四字节部分
本标准的四字节的部分,收录了上述双字节字符之外的,包括CJK统一汉字扩充A在内的GB 13000.1 中的全部字符。
4.2 汉字
如下表所示,GB18030-2000收录了27533个汉字:
类别 |
码位范围 |
码位数 |
字符数 |
字符类型 |
双字节部分 |
第一字节 0xB0-0xF7 |
6768 |
6763 |
汉字 |
第一字节0x81-0xA0 |
6080 |
6080 |
汉字 |
|
第一字节0xAA-0xFE |
8160 |
8160 |
汉字 |
|
四字节部分 |
第一字节0x81-0x82 |
6530 |
6530 |
CJK统一汉字扩充A |
27533就是6763+6080+8160+6530。双字节部分的6763+6080+8160=21003个汉字就是GBK的21003个汉字。
在Unicode中,CJK统一汉字扩充A有6582个汉字,为什么这里只有6530个汉字?
这是因为在GBK时代,双字节部分已经收录过CJK统一汉字扩充A的52个汉字,所以还余6530个汉字。
5 GB18030-2005
5.1 字汇
GB18030-2005的字汇部分是这样写的:
本标准收录的字符分别以单字节、双字节或四字节编码。
5.1 单字节部分
本标准中,单字节的部分收录了GB/T 11383-1989的0x00到0x7F全部128个字符。
5.2 双字节部分
本标准中,双字节的部分收录内容如下:
GB 13000.1-1993的全部CJK统一汉字字符。见附录A。
GB 13000.1-1993的CJK兼容区挑选出来的21个汉字。见附录A。
GB 13000.1-1993中收录而GB 2312未收录的我国台湾地区使用的图形字符139个。见附录A。
GB 13000.1-1993收录的其它字符31个。见附录A。
GB 2312中的非汉字符号。见附录A。
GB 12345 的竖排标点符号19个。见附录A。
GB 2312未收录的10个小写罗马数字。见附录A。
GB 2312未收录的带音调的汉语拼音字母5个以及ɑ和ɡ。见附录A。
汉字数字“〇”。见附录A。
表意文字描述符13个。见附录A和附录B。
对GB 13000.1-1993增补的汉字和部首/构件80个。见附录A和附录C。
双字节编码的欧元符号。见附录A。
5.3 四字节部分
本标准的四字节的部分,收录了上述双字节字符之外的,GB 13000的CJK统一汉字扩充A、CJK统一汉字扩充B和已经在GB13000中编码的我国少数民族文字的字符。见附录D。
GB18030-2005最主要的变化是增加了CJK统一汉字扩充B。它还去掉了单字节编码的欧元符号(0x80)。
5.2 汉字
如下表所示,GB18030-2005收录了70244个汉字:
类别 |
码位范围 |
码位数 |
字符数 |
字符类型 |
双字节部分 |
第一字节 0xB0-0xF7 |
6768 |
6763 |
汉字 |
第一字节0x81-0xA0 |
6080 |
6080 |
汉字 |
|
第一字节0xAA-0xFE |
8160 |
8160 |
汉字 |
|
四字节部分 |
第一字节0x81-0x82 |
6530 |
6530 |
CJK统一汉字扩充A |
第一字节0x95-0x98 |
42711 |
42711 |
CJK统一汉字扩充B |
70244就是6763+6080+8160+6530+42711。
6 结束语
GB2312有6763个汉字,GBK有21003个汉字,GB18030-2000有27533个汉字,GB18030-2005有70244个汉字。
Unicode 5.0中,如果不算兼容区,目前有70217个汉字。让我们比较一下Unicode的70217汉字和GB18030-2005中的70244汉字:
GB18030-2005 |
Unicode 5.0 |
对应的Unicode编码 |
CJK统一汉字的20902汉字 |
CJK统一汉字的20902汉字 |
0x4E00-0x9FA5 |
CJK统一汉字扩充A的6582汉字 |
CJK统一汉字扩充A的6582汉字 |
0x3400-0x4DB5 |
CJK统一汉字扩充B的42711汉字 |
CJK统一汉字扩充B的42711汉字 |
0x20000-0x2A6D6 |
CJK部首补充区的14个部首 |
未计入 |
2E81, 2E84, 2E88, 2E8B, 2E8C, 2E97, 2EA7, 2EAA, 2EAE, 2EB3, 2EB6, 2EB7, 2EBB, 2ECA |
CJK兼容汉字区的21个汉字 |
未计入 |
F92C, F979, F995, F9E7, F9F1, FA0C, FA0D, FA0E, FA0F, FA11, FA13, FA14, FA18, FA1F, FA20, FA21, FA23, FA24, FA27, FA28, FA29 |
“ ”8个部首 |
CJK统一汉字区新增了这8个字符 |
0x9FB4-0x9FBB |
未计入 |
CJK统一汉字区新增的14个字符 |
0x9FA6-0x9FB3 |
CJK统一汉字区新增的0x9FA6-0x9FB3这14个字符在GB18030中有对应的码位(0x82358F33-0x82358F39, 0x82359030-0x82359039, 0x82359130-0x82359134),不过GB18030没有列出这些字符。
附录1 GBK增补的80个汉字和部首
GBK增补的80个字符本来是放在PUA区的,后来又被Unicode收录。所以既可以用PUA区的编码表示,也可以用非PUA编码表示。正文中的表格可能不便复制,这里补充一张表格:
汉字 |
GBK编码 |
PUA编码 |
非PUA编码 |
|
FE50 |
E815 |
2E81 |
|
FE51 |
E816 |
20087 |
|
FE52 |
E817 |
20089 |
|
FE53 |
E818 |
200CC |
|
FE54 |
E819 |
2E84 |
|
FE55 |
E81A |
3473 |
|
FE56 |
E81B |
3447 |
|
FE57 |
E81C |
2E88 |
|
FE58 |
E81D |
2E8B |
|
FE59 |
E81E |
9FB4 |
|
FE5A |
E81F |
359E |
|
FE5B |
E820 |
361A |
|
FE5C |
E821 |
360E |
|
FE5D |
E822 |
2E8C |
|
FE5E |
E823 |
2E97 |
|
FE5F |
E824 |
396E |
|
FE60 |
E825 |
3918 |
|
FE61 |
E826 |
9FB5 |
|
FE62 |
E827 |
39CF |
|
FE63 |
E828 |
39DF |
|
FE64 |
E829 |
3A73 |
|
FE65 |
E82A |
39D0 |
|
FE66 |
E82B |
9FB6 |
|
FE67 |
E82C |
9FB7 |
|
FE68 |
E82D |
3B4E |
|
FE69 |
E82E |
3C6E |
|
FE6A |
E82F |
3CE0 |
|
FE6B |
E830 |
2EA7 |
|
FE6C |
E831 |
215D7 |
|
FE6D |
E832 |
9FB8 |
|
FE6E |
E833 |
2EAA |
|
FE6F |
E834 |
4056 |
|
FE70 |
E835 |
415F |
|
FE71 |
E836 |
2EAE |
|
FE72 |
E837 |
4337 |
|
FE73 |
E838 |
2EB3 |
|
FE74 |
E839 |
2EB6 |
|
FE75 |
E83A |
2EB7 |
|
FE76 |
E83B |
2298F |
|
FE77 |
E83C |
43B1 |
|
FE78 |
E83D |
43AC |
|
FE79 |
E83E |
2EBB |
|
FE7A |
E83F |
43DD |
|
FE7B |
E840 |
44D6 |
|
FE7C |
E841 |
4661 |
|
FE7D |
E842 |
464C |
|
FE7E |
E843 |
9FB9 |
|
FE80 |
E844 |
4723 |
|
FE81 |
E845 |
4729 |
|
FE82 |
E846 |
477C |
|
FE83 |
E847 |
478D |
|
FE84 |
E848 |
2ECA |
|
FE85 |
E849 |
4947 |
|
FE86 |
E84A |
497A |
|
FE87 |
E84B |
497D |
|
FE88 |
E84C |
4982 |
|
FE89 |
E84D |
4983 |
|
FE8A |
E84E |
4985 |
|
FE8B |
E84F |
4986 |
|
FE8C |
E850 |
499F |
|
FE8D |
E851 |
499B |
|
FE8E |
E852 |
49B7 |
|
FE8F |
E853 |
49B6 |
|
FE90 |
E854 |
9FBA |
|
FE91 |
E855 |
241FE |
|
FE92 |
E856 |
4CA3 |
|
FE93 |
E857 |
4C9F |
|
FE94 |
E858 |
4CA0 |
|
FE95 |
E859 |
4CA1 |
|
FE96 |
E85A |
4C77 |
|
FE97 |
E85B |
4CA2 |
|
FE98 |
E85C |
4D13 |
|
FE99 |
E85D |
4D14 |
|
FE9A |
E85E |
4D15 |
|
FE9B |
E85F |
4D16 |
|
FE9C |
E860 |
4D17 |
|
FE9D |
E861 |
4D18 |
|
FE9E |
E862 |
4D19 |
|
FE9F |
E863 |
4DAE |
|
FEA0 |
E864 |
9FBB |
参考:
http://www.cnblogs.com/lislok/archive/2008/10/14/1311041.html
http://www.fmddlmyy.cn/text24.html
相关推荐
根据给定文件的信息,我们可以总结出以下关于“判断字符编码格式代码”的相关知识点: ### 一、背景介绍 在计算机科学领域,字符编码是将文本转换为数字表示的方法,以便于计算机存储和处理。常见的字符编码包括...
配合`字符编码格式转换说明文档.docx`,你将能得到更详细的步骤和注意事项。 总的来说,理解和掌握字符编码转换在VC/C++开发中至关重要,特别是当你需要处理来自不同编码环境的数据时。通过正确使用`...
Java中的字符编码格式是编程过程中一个非常重要的概念,因为它直接影响到字符数据的正确表示和处理。本文将深入探讨Java中字符编码的相关问题,包括字符的存储格式、编码转换以及Java虚拟机(JVM)对字符的处理方式...
字符编码是计算机科学领域中的重要概念,用于将人类可读的字符转换为计算机可以处理的数字形式。在本文中,我们将深入探讨字符编码查询工具,包括它的功能、工作原理以及如何使用。 首先,"字符编码查询工具"正如其...
尤其是在处理国际化应用时,理解并掌握各种字符编码格式变得尤为重要。下面将介绍几种常见的字符编码格式以及如何在Java中实现它们之间的转换。 #### 1. US-ASCII (美国标准信息交换码) - **定义**:US-ASCII是一...
在IT行业中,处理文本文件时,经常会遇到不同的字符编码格式,如UTF-8、GBK、ISO-8859-1等。不同的编码格式决定了文本中的字符如何在计算机内存中存储和显示。当需要处理未知编码格式的文件,尤其是ZIP压缩文件时,...
"完整版字符编码查看器"是一款实用工具,它可以帮助用户查看和理解各种字符编码格式,包括常见的ASCII、Unicode(如UTF-8、UTF-16)以及GB2312、GBK等简体中文编码。 首先,ASCII编码是最基础的字符编码,它包含了...
这里我们将深入探讨标题和描述中提到的一些主要字符编码格式:UTF-8、UTF-7、ASCII、Unicode以及GB2312,同时还会涉及到大五码(Big5)以及它们之间的转换。 1. ASCII编码:ASCII(美国标准信息交换代码)是最基础...
2. 兼容性:支持多种常见的字符编码格式,适应不同地区的网页需求。 3. 实时预览:在更改编码后,页面会实时更新,让用户即时看到效果。 4. 快捷访问:通过浏览器工具栏的图标,用户可以快速调用插件进行编码设置。 ...
字符ANSI,Unicode,UnicodeEnd,UTF-8,UTF-7编码格式转换软件。
1. **显示字符编码**:用户可以选择不同的字符编码格式,查看每个字符对应的编码值。 2. **解码与编码转换**:将文本从一种编码转换为另一种编码,如将GBK编码的文本转换为UTF-8编码。 3. **字符查看**:通过图形化...
UTF-8(Unicode Transformation Format-8)是一种可变长度的字符编码格式,主要用于在网络中快速传输Unicode字符。UTF-8的基本原理是根据Unicode字符的范围,将其映射成不同长度的编码,具体规则如下: - 每个英文...
PyCharlockHolmes利用ICU的强大功能,能够识别多种复杂的字符编码格式,确保准确无误地处理各种文本数据。 2. **libmagic**:这是一个用于文件类型检测的库,常见于`file`命令中,它可以根据文件内容判断其类型和...
它通常是一个Servlet Filter,会在HTTP请求到达目标Servlet之前对请求进行预处理,将请求中的字符编码转换为应用程序期望的编码格式。例如,当客户端(如浏览器)使用POST方式提交非UTF-8编码的数据时,过滤器可以...
- **背景**:考虑到在软件开发过程中,不同的字符编码格式(如GB2312、UTF-16、BIG5等)可能会带来复杂的兼容性和处理难题,JVM的设计者们做出了明智的决策,即在JVM内部统一使用UTF-16作为字符的唯一编码格式。...
字符编码转换是指在计算机系统中,将数据从一种字符编码格式转换为另一种字符编码格式的过程。字符编码用于文本数据的存储、传输和处理。不同的字符编码格式适用于不同的语言环境和应用需求。编码转换在处理跨平台...
由于不同的系统、平台以及网络环境中可能存在多种字符编码格式,这导致了在处理文本数据时可能会遇到编码不一致的问题。本文旨在深入探讨与Java相关的字符集编码知识,包括但不限于编码的基本概念、几种常见的字符集...
2. **多种编码支持**:一个好的编码格式转换工具应该涵盖主流的字符编码格式,如ASCII、UTF-8、UTF-16、UTF-32、GBK、GB2312等,以满足不同场景的需求。 3. **预览与校验**:在转换之前,用户可以预览原始文件的...
在处理字符串和文本数据时,字符编码转换是一个常见的需求,因为不同的系统和应用可能使用不同的字符编码标准来表示文本。本资源提供了易语言字符编码转换的源码,帮助开发者理解和实现这一功能。 字符编码是用来...
1. **识别输入编码**:首先,你需要知道你接收到的数据是哪种编码格式。这可能通过元信息、文件头或者预先设定的信息来确定。 2. **编码转换**:一旦识别了输入编码,你可以使用VB的内置函数或第三方库来进行编码...