`

字符编码格式

    博客分类:
  • java
阅读更多

字符编码格式

1ASCII

我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有01两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从000000011111111

上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。

ASCII码一共规定了128个字符的编码,比如空格“SPACE”32(二进制00100000),大写的字母A65(二进制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个其它符号)。汉字问题稍后讨论。

3Unicode-所有符号编码

正如上一节所说,世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。

可以想象,如果有一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是Unicode,就像它的名字都表示的,这是一种所有符号的编码。

Unicode当然是一个很大的集合,现在的规模可以容纳100多万个符号。每个符号的编码都不一样,比如,U+0639表示阿拉伯字母AinU+0041表示英语的大写字母AU+4E25表示汉字。具体的符号对应表,可以查询unicode.org,或者专门的汉字对应表

4Unicode的问题

需要注意的是,Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。

比如,汉字unicode是十六进制数4E25,转换成二进制数足足有15位(100111000100101),也就是说这个符号的表示至少需要2个字节。表示其他更大的符号,可能需要3个字节或者4个字节,甚至更多。

这里就有两个严重的问题,第一个问题是,如何才能区别unicodeascii?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?第二个问题是,我们已经知道,英文字母只用一个字节表示就够了,如果unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,这对于存储来说是极大的浪费,文本文件的大小会因此大出二三倍,这是无法接受的。

它们造成的结果是:1)出现了unicode的多种存储方式,也就是说有许多种不同的二进制格式,可以用来表示unicode2unicode在很长一段时间内无法推广,直到互联网的出现。

5UTF-8

互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF-16UTF-32,不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8Unicode的实现方式之一。

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编码。

已知unicode4E25100111000100101),根据上表,可以发现4E25处在第三行的范围内(0000 0800-0000 FFFF),因此UTF-8编码需要三个字节,即格式是“1110xxxx 10xxxxxx 10xxxxxx”。然后,从的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了,UTF-8编码是“11100100 10111000 10100101”,转换成十六进制就是E4B8A5

6UnicodeUTF-8之间的转换

通过上一节的例子,可以看到Unicode码是4E25UTF-8编码是E4B8A5,两者是不一样的。它们之间的转换可以通过程序实现。

Windows平台下,有一个最简单的转化方法,就是使用内置的记事本小程序Notepad.exe。打开文件后,点击文件菜单中的另存为命令,会跳出一个对话框,在最底部有一个编码的下拉条。

 

里面有四个选项:ANSIUnicodeUnicode big endian UTF-8

1ANSI是默认的编码方式。对于英文文件是ASCII编码对于简体中文文件是GB2312编码(只针对Windows简体中文版,如果是繁体中文版会采用Big5码)。

2Unicode编码指的是UCS-2编码方式,即直接用两个字节存入字符的Unicode码。这个选项用的little endian格式。

3Unicode big endian编码与上一个选项相对应。我在下一节会解释little endianbig endian的涵义。

4UTF-8编码,也就是上一节谈到的编码方法。

选择完编码方式后,点击保存按钮,文件的编码方式就立刻转换好了。

7Little endianBig 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表示。这正好是两个字节,而且FFFE1

如果一个文本文件的头两个字节是FE FF,就表示该文件采用大尾方式(人眼观察模式,自左向右高字节在前,低字节在后);如果头两个字节是FF FE,就表示该文件采用小尾方式(与大尾方式相反)。

8.实例

下面,举一个实例。

打开记事本程序Notepad.exe,新建一个文本文件,内容就是一个字,依次采用ANSIUnicodeUnicode big endian UTF-8编码方式保存。

然后,用文本编辑软件UltraEdit十六进制功能,观察该文件的内部编码方式。

1ANSI:文件的编码就是两个字节“D1 CF”,这正是GB2312编码,这也暗示GB2312是采用大头方式存储的。

2Unicode:编码是四个字节“FF FE 25 4E”,其中“FF FE”表明是小头方式存储,真正的编码是4E25

3Unicode big endian:编码是四个字节“FE FF 4E 25”,其中“FE FF”表明是大头方式存储。

4UTF-8:编码是六个字节“EF BB BF E4 B8 A5”,前三个字节“EF BB BF”表示这是UTF-8编码,后三个“E4B8A5”就是的具体编码,它的存储顺序与编码顺序是一致的。(有时候UltraEdit也不靠谱,我用的10.20b版本对UTF8查看就出问题)。

9.汉字编码

CJK含义

中日韩统一表意文字(CJK Unified Ideographs),目的是要把分别来自中文、日文、韩文、越文中,本质、意义相同、形状一样或稍异的表意文字(主要为汉字,但也有仿汉字如日本国字、韩国独有汉字、越南的喃字)于ISO 10646Unicode标准内赋予相同编码。CJK 是中文(Chinese)、日文(Japanese)、韩文(Korean)三国文字的缩写。顾名思义,它能够支持这三种文字。实际上,CJK 能够支持在 LaTeX 中使用包括中文、日文、韩文在内的多种亚洲双字节文字。CJK 是《GB2312-80》、《BIG5》等字符集的超集。

Unicode中的汉字

Unicode 5.099089个字符中,有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-FE7EFE80-FEA0。下图标注了Unicode编码。

 

在制定GBK时,Unicode中还没有这些字符,所以使用了专用区的码位,这80个字符的码位是0xE815-0xE864。后来,Unicode52个汉字收录到“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 113830x000x7F全部128个字符及单字节编码的欧元符号。
5.2
双字节部分
  本标准中,双字节的部分收录内容如下:
  GB 13000.1的全部CJK统一汉字字符。
  GB 13000.1CJK兼容区挑选出来的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
第二字节 0xA1-0xFE

6768

6763

汉字

第一字节0x81-0xA0
第二字节0x40-0xFE

6080

6080

汉字

第一字节0xAA-0xFE
第二字节0x40-0xA0

8160

8160

汉字

四字节部分

第一字节0x81-0x82
第二字节0x30-0x39
第三字节0x81-0xFE
第四字节0x30-0x39

6530

6530

CJK统一汉字扩充A

27533就是6763+6080+8160+6530。双字节部分的6763+6080+8160=21003个汉字就是GBK21003个汉字。

Unicode中,CJK统一汉字扩充A6582个汉字,为什么这里只有6530个汉字?

这是因为在GBK时代,双字节部分已经收录过CJK统一汉字扩充A52个汉字,所以还余6530个汉字。

5 GB18030-2005

5.1 字汇

GB18030-2005的字汇部分是这样写的:

本标准收录的字符分别以单字节、双字节或四字节编码。
5.1
单字节部分
  本标准中,单字节的部分收录了GB/T 11383-19890x000x7F全部128个字符。
5.2
双字节部分
  本标准中,双字节的部分收录内容如下:
  GB 13000.11993的全部CJK统一汉字字符。见附录A
  GB 13000.11993CJK兼容区挑选出来的21个汉字。见附录A
  GB 13000.11993中收录而GB 2312未收录的我国台湾地区使用的图形字符139个。见附录A
  GB 13000.11993收录的其它字符31个。见附录A
  GB 2312中的非汉字符号。见附录A
  GB 12345 的竖排标点符号19个。见附录A
  GB 2312未收录的10个小写罗马数字。见附录A
  GB 2312未收录的带音调的汉语拼音字母5个以及ɑɡ。见附录A
  汉字数字见附录A
  表意文字描述符13个。见附录A和附录B
  对GB 13000.11993增补的汉字和部首/构件80个。见附录A和附录C
  双字节编码的欧元符号。见附录A
5.3
四字节部分
  本标准的四字节的部分,收录了上述双字节字符之外的,GB 13000CJK统一汉字扩充ACJK统一汉字扩充B和已经在GB13000中编码的我国少数民族文字的字符。见附录D

GB18030-2005最主要的变化是增加了CJK统一汉字扩充B。它还去掉了单字节编码的欧元符号(0x80)。

5.2 汉字

如下表所示,GB18030-2005收录了70244个汉字:

类别

码位范围

码位数

字符数

字符类型

双字节部分

第一字节 0xB0-0xF7
第二字节 0xA1-0xFE

6768

6763

汉字

第一字节0x81-0xA0
第二字节0x40-0xFE

6080

6080

汉字

第一字节0xAA-0xFE
第二字节0x40-0xA0

8160

8160

汉字

四字节部分

第一字节0x81-0x82
第二字节0x30-0x39
第三字节0x81-0xFE
第四字节0x30-0x39

6530

6530

CJK统一汉字扩充A

第一字节0x95-0x98
第二字节0x30-0x39
第三字节0x81-0xFE
第四字节0x30-0x39

42711

42711

CJK统一汉字扩充B

70244就是6763+6080+8160+6530+42711

6 结束语

GB23126763个汉字,GBK21003个汉字,GB18030-200027533个汉字,GB18030-200570244个汉字。

Unicode 5.0中,如果不算兼容区,目前有70217个汉字。让我们比较一下Unicode70217汉字和GB18030-2005中的70244汉字:

GB18030-2005

Unicode 5.0

对应的Unicode编码

CJK统一汉字的20902汉字

CJK统一汉字的20902汉字

0x4E00-0x9FA5

CJK统一汉字扩充A6582汉字

CJK统一汉字扩充A6582汉字

0x3400-0x4DB5

CJK统一汉字扩充B42711汉字

CJK统一汉字扩充B42711汉字

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-0x9FB314个字符在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

 

分享到:
评论

相关推荐

    判断字符编码格式代码

    根据给定文件的信息,我们可以总结出以下关于“判断字符编码格式代码”的相关知识点: ### 一、背景介绍 在计算机科学领域,字符编码是将文本转换为数字表示的方法,以便于计算机存储和处理。常见的字符编码包括...

    VC/C++ 字符编码格式转换

    配合`字符编码格式转换说明文档.docx`,你将能得到更详细的步骤和注意事项。 总的来说,理解和掌握字符编码转换在VC/C++开发中至关重要,特别是当你需要处理来自不同编码环境的数据时。通过正确使用`...

    Java中字符编码格式详解

    Java中的字符编码格式是编程过程中一个非常重要的概念,因为它直接影响到字符数据的正确表示和处理。本文将深入探讨Java中字符编码的相关问题,包括字符的存储格式、编码转换以及Java虚拟机(JVM)对字符的处理方式...

    字符编码查询工具

    字符编码是计算机科学领域中的重要概念,用于将人类可读的字符转换为计算机可以处理的数字形式。在本文中,我们将深入探讨字符编码查询工具,包括它的功能、工作原理以及如何使用。 首先,"字符编码查询工具"正如其...

    java字符串的各种编码转换

    尤其是在处理国际化应用时,理解并掌握各种字符编码格式变得尤为重要。下面将介绍几种常见的字符编码格式以及如何在Java中实现它们之间的转换。 #### 1. US-ASCII (美国标准信息交换码) - **定义**:US-ASCII是一...

    获取zip文件编码格式 cpdetector.zip

    在IT行业中,处理文本文件时,经常会遇到不同的字符编码格式,如UTF-8、GBK、ISO-8859-1等。不同的编码格式决定了文本中的字符如何在计算机内存中存储和显示。当需要处理未知编码格式的文件,尤其是ZIP压缩文件时,...

    完整版字符编码查看器.rar

    "完整版字符编码查看器"是一款实用工具,它可以帮助用户查看和理解各种字符编码格式,包括常见的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. **字符查看**:通过图形化...

    Java字符集和编码

    UTF-8(Unicode Transformation Format-8)是一种可变长度的字符编码格式,主要用于在网络中快速传输Unicode字符。UTF-8的基本原理是根据Unicode字符的范围,将其映射成不同长度的编码,具体规则如下: - 每个英文...

    Python字符编码检测库PyCharlockHolmes.zip

    PyCharlockHolmes利用ICU的强大功能,能够识别多种复杂的字符编码格式,确保准确无误地处理各种文本数据。 2. **libmagic**:这是一个用于文件类型检测的库,常见于`file`命令中,它可以根据文件内容判断其类型和...

    字符编码过滤器 字符编码转换 post字符转换

    它通常是一个Servlet Filter,会在HTTP请求到达目标Servlet之前对请求进行预处理,将请求中的字符编码转换为应用程序期望的编码格式。例如,当客户端(如浏览器)使用POST方式提交非UTF-8编码的数据时,过滤器可以...

    Java中的字符集编码入门(五)Java代码中的字符编码转换Part1.doc

    - **背景**:考虑到在软件开发过程中,不同的字符编码格式(如GB2312、UTF-16、BIG5等)可能会带来复杂的兼容性和处理难题,JVM的设计者们做出了明智的决策,即在JVM内部统一使用UTF-16作为字符的唯一编码格式。...

    字符编码的转换.pdf

    字符编码转换是指在计算机系统中,将数据从一种字符编码格式转换为另一种字符编码格式的过程。字符编码用于文本数据的存储、传输和处理。不同的字符编码格式适用于不同的语言环境和应用需求。编码转换在处理跨平台...

    java字符集编码问题

    由于不同的系统、平台以及网络环境中可能存在多种字符编码格式,这导致了在处理文本数据时可能会遇到编码不一致的问题。本文旨在深入探讨与Java相关的字符集编码知识,包括但不限于编码的基本概念、几种常见的字符集...

    编码格式转换工具

    2. **多种编码支持**:一个好的编码格式转换工具应该涵盖主流的字符编码格式,如ASCII、UTF-8、UTF-16、UTF-32、GBK、GB2312等,以满足不同场景的需求。 3. **预览与校验**:在转换之前,用户可以预览原始文件的...

    易语言字符编码转换

    在处理字符串和文本数据时,字符编码转换是一个常见的需求,因为不同的系统和应用可能使用不同的字符编码标准来表示文本。本资源提供了易语言字符编码转换的源码,帮助开发者理解和实现这一功能。 字符编码是用来...

    VB转换字符编码(构造发送字符消息的准备工作)

    1. **识别输入编码**:首先,你需要知道你接收到的数据是哪种编码格式。这可能通过元信息、文件头或者预先设定的信息来确定。 2. **编码转换**:一旦识别了输入编码,你可以使用VB的内置函数或第三方库来进行编码...

Global site tag (gtag.js) - Google Analytics