必赢亚洲手机app下载


读书笔记2014第17本

您想买哪款

消灭

每一个程序员都不可制止的碰着字符编码的问题,特别是做Web开发的程序员,“乱码问题”从来是令人胸口痛的题目,也许你曾经很少遭逢“乱码”问题,可是,对解决乱码的法门的内在规律,您是否掌握?本人作为一个程序员,在字符编码方面同样碰着重重题材,而且平昔对各类编码懵懵懂懂、不清不楚;在工作中也早已碰着一个很讨厌的编码问题。这两天在网上收集了大量编码方面的材料,对字符编码算是驾驭的相比较清楚了。下面把自身觉得相比较紧要的知识点记录下来,一方面有利于将来复习;另一方面也盼望给跟自己同一懵懵懂懂的人一个参考。不对或不妥之处,请批评指正。

 

往日,先了解一些可行概念:“字符集”、“字符编码”和“内码”。

1、字符集与字符编码

字符是各个文字和标记的总称,包括种种国家文字、标点符号、图形符号、数字等。字符集是五个字符的聚众,字符集序列较多,每个字符集包含的字符个数不同,常见字符集有:ASCII字符集、ISO
8859字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。总括机要精确的处理各个字符集文字,需要举办字符编码,以便总计机可以分辨和仓储各类文字。 

 

编码(encoding)和字符集不同。字符集只是字符的聚众,不必然适合作网络传递、处理,有时须经编码(encode)后才能使用。如Unicode可依不同需要以UTF-8、UTF-16、UTF-32等措施编码。

 

字符编码就是以二进制的数字来对应字符集的字符。

 

从而,对字符进行编码,是消息交换的技艺基础。

 

动用什么字符。也就是说哪些汉字,字母和标记会被收入标准中。所涵盖“字符”的聚合就称为“字符集”。

规定每个“字符”分别用一个字节依然两个字节存储,用哪些字节来存储,那一个确定就称为“编码”。

 

次第国家和地区在制订编码标准的时候,“字符的碰面”和“编码”一般都是同时制定的。由此,平时我们所说的“字符集”,比如:GB2312,
GBK, JIS 等,除了有“字符的聚集”这层含义外,同时也蕴含了“编码”的含义。

 

瞩目:Unicode字符集有多种编码形式,如UTF-8、UTF-16等;ASCII只有一种;大多数MBCS(包括GB2312)也只有一种。

2、什么是内码?

2.1 维基百科的解释

 

在微机科学及连锁领域当中,内码指的是“将音信编码后,透过某种模式储存在特定记忆装置时,装置内部的编码形式”。在不同的系统中,会有两样的内码。

在既往的英文系统中,内码为ASCII。在繁体闽南语系统中,近年来常用的内码为大五码(Big5)。在简体中文系统中,内码则为国标码(国家标准代码:现在强制要求利用GB18030标准;较旧统计机如故拔取GB2312)。而统一码(Unicode)则为另一常见内码。

 

2.2 百度系数的解释

 

内码是指整连串统中行使的二进制字符编码,是关系输入、输出与系统平台之间的沟通码,通过内码可以直达通用和高效用传输文本的目标。比如MS
Word中所存储和调用的就是内码而非图形文字。英文ASCII字符选取一个字节的内码表示,普通话字符如国标字符集中,GB2312、GB12345、GB13000皆用双字节内码,GB18030(27,533中国字)双字节内码汉字为20,902个,另外6,631个汉字用四字节内码。

3、字符编码分类总结

下边从电脑对多国语言协理的角度来总结字符编码。

 

3.1 ASCII编码

 

以下来自“维基百科”:

ASCII(American Standard Code for Information
Interchange,美利坚联邦合众国音讯交流标准代码)是基于拉丁字母的一套电脑编码系统。它重要用于显示现代保加利亚语,而其扩充版本EASCII则足以勉强展现其余西欧语言。它是当今最通用的单字节编码系统(不过有被UniCode追上的迹象),并一致国际标准ISO/IEC
646。

ASCII首次以正规化标准的型态宣布是在1967年,最终两次革新则是在1986年,至今为止共定义了128个字符;其中33个字符不可能出示(这是以今日操作系统为依归,但在DOS形式下可展现出部分诸如笑脸、扑克牌花式等8-bit符号),且这33个字符多数都已是陈废的控制字符。控制字符的用处重假若用来操控已经处理过的文字。在33个字符之外的是95个可兆示的字符,包含用键盘敲下空白键所发生的空白字符也算1个可呈现字符(显示为空白)。

ASCII表:见http://zh.wikipedia.org/zh-cn/ASCII

 

ASCII缺点:

ASCII的最大毛病是只可以展现26个为主拉丁字母、阿拉伯数字和英式标点符号,由此只能用于展现现代美利哥爱尔兰语(而且在处理波兰语当中的外来词如naïve、café、élite等等时,所有重音符号都只可以去掉,即便如此做会背离拼写规则)。而EASCII虽然缓解了部份西欧语言的体现问题,但对更多其他语言仍然不能。由此现在的苹果电脑已经吐弃ASCII而转用Unicode。

 

最早的英文DOS操作系统的体系内码是:ASCII。总计机这时候只协助朝鲜语,其他语言不可知在处理器存储和展示。

 

在该阶段,单字节字符串使用一个字节存放一个字符(SBCS,Single Byte
Character System)。如:”鲍勃(Bob)123″占6个字节。

 

3.2 ANSI编码

 

为使总计机协助更多语言,平常使用0x800~xFF范围的2个字节来表示1个字符。比如:汉字
‘中’ 在闽南语言操作系统中,使用 [0xD6,0xD0]这五个字节存储。

 

不同的国度和地域制定了不同的专业,因而发出了GB2312,BIG5,JIS等各自的编码标准。那几个应用2个字节来表示一个字符的各类汉字延伸编码情势,称为
ANSI 编码。在简体粤语系统下,ANSI 编码代表 GB2312
编码,在日文操作系统下,ANSI 编码代表 JIS 编码。

 

不同 ANSI
编码之间互不兼容,当音信在列国间互换时,不可能将属于三种语言的文字,存储在同一段
ANSI 编码的文件中。

 

粤语DOS、闽南语/日文Windows 95/98一代系统内码使用的是ANSI编码(本地化)

 

在行使ANSI编码襄助多语言阶段,每个字符使用一个字节或五个字节来表示(MBCS,Multi-Byte
Character
System),因而,这种措施存放的字符也被称作多字节字符。比如,”粤语123″
在闽南语言 Windows 95
内存中为7个字节,每个汉字占2个字节,每个英文和数字字符占1个字节。

 

在非 Unicode
环境下,由于不同国度和地区拔取的字符集不平等,很可能现身无法正常显示所有字符的状态。微软企业使用了代码页(Codepage)转换表的技能来过渡性的有些解决这一题材,即透过点名的转移表将非
Unicode 的字符编码转换为同一字符对应的系统里头使用的 Unicode
编码。可以在“语言与区域设置”中接纳一个代码页作为非 Unicode
编码所使用的默认编码模式,如936为简体粤语GBK,950为陶文闽南语Big5(皆指PC上使用的)。在这种境况下,一些非韩语的南美洲语言编写的软件和文档很可能出现乱码。而将代码页设置为对应语言粤语处理又会产出问题,这场合不能避免。从根本上说,完全使用统一编码才是解决之道,但当下尚不可以做到这或多或少。

  代码页技术现在大规模为各样平台所拔取。UTF-7 的代码页是65000,UTF-8
的代码页是65001。

 

3.3 Unicode编码

 

为了使国际间信息交换尤其有益,国际团队制订了 UNICODE
字符集,为各个语言中的每一个字符设定了合并并且唯一的数字编号,以知足跨语言、跨平台展开文本转换、处理的渴求。

 

Unicode字符集可以简写为UCS(Unicode Character
Set)。早期的unicodeUnicode标准有UCS-2、UCS-4的说法。UCS-2用六个字节编码,UCS-4用4个字节编码。

 

在 UNICODE 被拔取之后,统计机存放字符串时,改为寄放每个字符在 UNICODE
字符集中的序号。近年来电脑一般采用 2 个字节(16
位)来存放一个序号(DBCS,Double Byte Character
System),因而,这种模式存放的字符也被称作宽字节字符。比如,字符串
“粤语123” 在 Windows 2000 下,内存中其实存放的是 5
个序号,一共10个字节。

 

Unicode字符集包含了各个语言中运用到的有所“字符”。用来给 UNICODE
字符集编码的正规化有好多种,比如:UTF-8, UTF-7, UTF-16, UnicodeLittle,
UnicodeBig 等。

4、常用编码规则

4.1 单字节字符编码

 

(1)编码标准:ISO-8859-1。

(2)表明:最简易的编码规则,每一个字节直接作为一个 UNICODE
字符。比如,[0xD6, 0xD0] 这五个字节,通过 iso-8859-1
转化为字符串时,将间接得到 [0x00D6, 0x00D0] 两个 UNICODE 字符,即
“ÖД。

 

恰恰相反,将 UNICODE 字符串通过 iso-8859-1 转化为字节串时,只好健康转化
0~255 范围的字符。

 

4.2 ANSI编码

 

(1)GB2312, BIG5, Shift_JIS, ISO-8859-2。

(2)把 UNICODE 字符串通过 ANSI
编码转化为“字节串”时,按照各自编码的确定,一个 UNICODE
字符可能转化成一个字节或四个字节。

 

反过来说,将字节串转化成字符串时,也说不定四个字节转化成一个字符。比如,[0xD6,
0xD0] 这三个字节,通过 GB2312 转化为字符串时,将取得 [0x4E2D]
一个字符,即 ‘中’ 字。

 

“ANSI 编码”的特点:

(1)这一个“ANSI 编码标准”都只可以处理各自语言范围以内的 UNICODE 字符。

(2)“UNICODE 字符”与“转换出来的字节”之间的涉及是人为规定的。

 

4.3 UNICODE编码

 

(1)编码标准:UTF-8, UTF-16, UnicodeBig。

(2)与“ANSI 编码”类似的,把字符串通过 UNICODE
编码转化成“字节串”时,一个 UNICODE 字符可能转化成一个字节或四个字节。

 

与“ANSI 编码”不同的是:

(1)这个“UNICODE 编码”可以处理所有的 UNICODE 字符。

(2)“UNICODE 字符”与“转换出来的字节”之间是足以经过测算拿到的。

 

俺们实际没有必要去追究每一种编码具体把某一个字符编码成了哪多少个字节,我们只需要精晓“编码”的定义就是把“字符”转化成“字节”就足以了。对于“UNICODE
编码”,由于它们是可以透过测算得到的,因而,在非凡的场地,我们可以去打听某一种“UNICODE
编码”是如何的规则。

5、编码的界别

5.1 GB2312、GBK和GB18030

 

(1)GB2312 

 

当中国人们拿到总括机时,已经远非得以行使的字节状态来表示汉字,况且有6000六个常用汉字需要保留,于是想到把这一个ASCII码中127号未来的奇异符号们直接裁撤掉,
规定:一个稍差于127的字符的意思与原先一样,但六个领先127的字符连在一块儿时,就意味着一个中国字,后边的一个字节(称之为高字节)从0xA1用到0xF7,前面一个字节(低字节)从0xA1到0xFE,这样大家就可以组成出大概7000多少个简体汉字了。在那个编码里,我们还把数学符号、罗马希腊的字母、日文的假名们都编进去了,连在
ASCII
里本来就有的数字、标点、字母都统统重新编了六个字节长的编码,这就是常说的”全角”字符,而本来在127号以下的那一个就叫”半角”字符了。这种汉字方案叫做
“GB2312″。GB2312 是对 ASCII 的国语扩大。包容ASCII。

 

(2)GBK 

 

不过中国的方块字太多了,大家很快就就意识有过两人的姓名没有办法在此地打出去,不得不连续把
GB2312
没有利用的码位找出来用上。后来或者不够用,于是干脆不再要求低字节一定是127号未来的内码,只要第一个字节是高于127就一定表示这是一个汉字的发端,不管前面跟的是不是扩展字符集里的情节。结果扩展之后的编码方案被称为
“GBK” 标准,GBK 包括了 GB2312
的有着情节,同时又充实了近20000个新的汉字(包括繁体字)和标志。

 

(3)GB18030 

 

新生少数民族也要用电脑了,于是大家再扩张,又加了几千个新的少数民族的字,GBK
扩成了 GB18030。从此之后,中华民族的学问就可以在微机时代中继承了。 

 

华夏的程序员们见到这一名目繁多汉字编码的正经是好的,于是通称他们叫做
“DBCS”(Double Byte Charecter Set
双字节字符集)。在DBCS连串标准里,最大的风味是两字节长的方块字字符和一字节长的英文字符并存于同一套编码方案里,由此他们写的次序为了辅助中文处理,必须要小心字串里的每一个字节的值,尽管这些值是过量127的,那么就以为一个双字节字符集里的字符出现了。在这种意况下,”一个中国字算五个英文字符!”。但是,在Unicode环境下却不用总是这样。 

 

5.1 Unicode和BigEndianUnicode

 

那五个指令存储顺序不同,如”A”的Unicode编码为6500,而BigEndianUnicode编码为0065。

 

5.2 UTF-7、UTF-8和UTF-16

 

在Unicode里,所有的字符被同样重视。汉字不再行使“六个扩充ASCII”,而是利用“1个Unicode”,注意,现在的汉字是“一个字符”了,于是,拆字、总结字数这么些题材也就自然则然的解决了。

 

可是,这么些世界不是顶尖的,无法在一夜之间所有的体系都采用Unicode来处理字符,所以Unicode在诞生之日,就必须考虑一个严俊的题目:和ASCII字符集之间的不兼容问题。 

 

咱俩领略,ASCII字符是单个字节的,比如“A”的ASCII是65。而Unicode是双字节的,比如“A”的Unicode是0065,这就造成了一个百般大的题材:以前处理ASCII的这套机制无法被用来拍卖Unicode了。

 

另一个尤其严重的题材是,C语言使用’\0’作为字符串结尾,而Unicode里恰恰有好多字符都有一个字节为0,这样一来,C语言的字符串函数将不能正常处理Unicode,除非把世界上拥有用C写的次第以及她们所用的函数库全体换掉。

 

于是,比Unicode更宏大的东东落地了,之所以说它更宏伟是因为它让Unicode不再存在于纸上,而是实事求是的留存于我们我们的电脑中。这就是:UTF。

 

UTF= UCS Transformation Format,即UCS转换(传输)格式。

它是将Unicode编码规则和处理器的莫过于编码对应起来的一个规则。现在流行的UTF有2种:UTF-8和UTF-16。

 

这两种都是Unicode的编码实现。

 

5.2.1 UTF-8

 

UCS-2编码(16进制)   UTF-8 字节流(二进制)

0000 – 007F         0xxxxxxx

0080 – 07FF         110xxxxx 10xxxxxx

0800 – FFFF         1110xxxx 10xxxxxx 10xxxxxx 

 

例如“汉”字的Unicode编码是6C49。6C49在0800-FFFF之间,所以一定要用3字节模板了:1110xxxx
10xxxxxx 10xxxxxx。将6C49写成二进制是:0110 110001
001001,用这些比特流依次代替模板中的x,拿到:11100110 10110001
10001001,即E6 B1 89。

 

可见UTF-8是变长的,将Unicode编码为00000000-0000007F的字符,用单个字节来代表;
00000080-000007FF的字符用六个字节表示;00000800-0000FFFF的字符用3字节表示。因为近来结束Unicode-16规范没有点名FFFF以上的字符,所以UTF-8最多是选用3个字节来表示一个字符。但理论上来说,UTF-8最多需要用6字节代表一个字符。 

 

UTF-8兼容ASCII。

 

5.2.2 UTF-16(标准的Unicode成为UTF-16)

 

UTF-16和方面提到的Unicode本身的编码规范是同样的。

 

UTF-16以16位为单元对UCS举行编码。对于小于0x10000的UCS码,UTF-16编码就等于UCS码对应的16位无符号整数。对于不小于0x10000的UCS码,定义了一个算法。可是鉴于实在接纳的UCS2,或者UCS4的BMP必然小于0x10000,所以就当下而言,能够认为UTF-16和UCS-2基本相同。但UCS-2只是一个编码方案,UTF-16却要用于实际的传导,所以就只可以考虑字节序的题目。

 

UTF-16不兼容ASCII。

 

5.2.3 UTF-7

 

UTF-7 (7-位元 Unicode 转换格式(Unicode Transformation Format,简写成
UTF)) 是一种可变长度字元编码模式,用以将 Unicode 字元以 ASCII
编码的字元串来呈现,可以使用在电子邮件传输之类的使用。

 

UTF-7并非Unicode标准之一。想要详细精通的可以查看有关资料。

6、Unicode与UTF

Unicode是内存编码表示方案(是业内),而UTF是咋样保存和传导Unicode的方案(是贯彻)。

 

6.1 UTF的字节序和BOM

 

6.1.1 字节序

 

UTF-8以字节为编码单元,没有字节序的题目。UTF-16以多少个字节为编码单元,在诠释一个UTF-16文本前,首先要弄领悟每个编码单元的字节序。例如收到一个“奎”的Unicode编码是594E,“乙”的Unicode编码是4E59。倘诺大家吸收UTF-16字节流“594E”,那么这是“奎”仍旧“乙”?

 

Unicode规范中引进的号子字节顺序的章程是BOM。BOM不是“比尔(Bill) Of
Material”的BOM表,而是Byte Order 马克(Mark)。BOM是一个有点小智慧的想法:

 

在UCS编码中有一个号称”ZERO WIDTH NO-BREAK
SPACE”的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实质上传输中。UCS规范提出我们在传输字节流前,先传输字符”ZERO
WIDTH NO-BREAK SPACE”。

 

如此只要接收者收到FEFF,就标志这个字节流是Big-Endian的;如若接受FFFE,就标明这多少个字节流是Little-Endian的。由此字符”ZERO
WIDTH NO-BREAK SPACE”又被称作BOM。

 

UTF-8不需要BOM来注解字节顺序,但足以用BOM来表明编码形式。字符”ZERO WIDTH
NO-BREAK SPACE”的UTF-8编码是EF BB
BF(读者可以用大家面前介绍的编码方法验证一下)。所以一旦接收者收到以EF
BB BF开首的字节流,就知晓这是UTF-8编码了。

 

6.1.2 BOM

 

(1)BOM的来历 

 

为了鉴别 Unicode 文件,Microsoft 提议持有的 Unicode 文件应该以 ZERO
WIDTH NOBREAK
SPACE(U+FEFF)字符开端。这作为一个“特征符”或“字节顺序标记(byte-order
mark,BOM)”来甄别文件中采纳的编码和字节顺序。

 

(2)不同的系统对BOM的支撑 

 

因为一些序列或程序不匡助BOM,因而带有BOM的Unicode文件有时会带来一些题材。

 

①JDK1.5以及从前的Reader都无法处理带有BOM的UTF-8编码的文书,解析这种格式的xml文件时,会抛出非常:Content
is not allowed in
prolog。“对于解决形式,之后我会写篇小说特别研究该问题。”

 

②Linux/UNIX 并不曾采用 BOM,因为它会破坏现有的 ASCII 文件的语法约定。

 

③见仁见智的编辑工具对BOM的拍卖也各不相同。使用Windows自带的记事本将文件保留为UTF-8编码的时候,记事本会自动在文件开端插入BOM(尽管BOM对UTF-8来说并不是必须的)。而其他众多编辑器用不用BOM是足以采用的。UTF-8、UTF-16都是这么。

 

(3)BOM与XML 

 

XML解析读取XML文档时,W3C定义了3条规则:

 

①假使文档中有BOM,就定义了文件编码;

②如若文档中并未BOM,就翻开XML声明中的编码属性;

③假如上述二者都没有,就假定XML文档接纳UTF-8编码。

 

6.2 决定文本的字符集与编码

 

软件通常有二种途径来决定文本的字符集和编码。

 

(1)对于Unicode文本最标准的门径是检测文本最先河的多少个字节。如:

 

起首字节        Charset/encoding

 EF BB BF    UTF-8

 FE FF     UTF-16/UCS-2, little endian(UTF-16LE)

 FF FE     UTF-16/UCS-2, big endian(UTF-16BE)

 FF FE 00 00  UTF-32/UCS-4, little endian.

 00 00 FE FF  UTF-32/UCS-4, big-endia

 

(2)选拔一种相比安全的不二法门来支配字符集及其编码,这就是弹出一个对话框来请示用户。

 

不过MBCS文本(ANSI)没有这么些身处起始的字符集标记,现在游人如织软件保存文本为Unicode时,能够选拔是否保存这多少个身处初阶的字符集标记。因而,软件不应当借助于这种路径。这时,软件可以利用一种相比较安全的不二法门来支配字符集及其编码,这就是弹出一个会话框来请示用户。

 

(3)接纳协调“猜”的点子。

 

即便软件不想麻烦用户,或者它不便利向用户请示,这它只好动用自己“猜”的不二法门,软件可以按照总体文件的性状来怀疑它或许属于哪个charset,那就很可能禁止了。使用记事本打开那一个“联通”文件就属于这种境况。(把原来属于ANSI编码的文本正是UTF-8处理,详细表达见:http://blog.csdn.net/omohe/archive/2007/05/29/1630186.aspx)

 

6.3 记事本的两种编码

 

(1)ANSI编码 

记事本默认保存的编码格式是:ANSI,即当地操作系统默认的内码,简体中文一般为GB2312。这多少个怎么验证呢?用记事本保存后,使用EmEditor、EditPlus和UltraEdit之类的公文编辑器打开。推荐使用EmEditor,打开后,在又下角会展现编码:GB2312。

 

(2)Unicode编码 

用记事本另存为时,编码采纳“Unicode”,用EmEditor打开该公文,发现编码格式是:UTF-16LE+BOM(有签署)。用十六进制格局查看,发现开首两字节为:FF
FE。这就是BOM。

 

(3)Unicode big endian 

用记事本另存为时,编码选拔“Unicode”,用EmEditor打开该文件,发现编码格式是:UTF-16BE+BOM(有署名)。用十六进制情势查看,发现起初两字节为:FE
FF。这就是BOM。

 

(4)UTF-8 

用记事本另存为时,编码采取“UTF-8”,用EmEditor打开该公文,发现编码格式是:UTF-8(有签字)。用十六进制格局查看,发现初阶五个字节为:EF
BB BF。那就是BOM。

7、二种误解,以及乱码暴发的原由和解决办法

7.1 误解一

 

在将“字节串”转化成“UNICODE
字符串”时,比如在读取文本文件时,或者经过网络传输文本时,容易将“字节串”简单地作为单字节字符串,采纳每“一个字节”就是“一个字符”的方法举办中转。

 

而实际上,在非英文的条件中,应该将“字节串”作为 ANSI
字符串,采取适当的编码来得到 UNICODE
字符串,有可能“五个字节”才能拿到“一个字符”。

 

万般,一向在英文环境下做开发的程序员们,容易有这种误会。

 

7.2 误解二

 

在 DOS,Windows 98 等非 UNICODE 环境下,字符串都是以 ANSI
编码的字节模式存在的。那种以字节情势存在的字符串,必须了解是哪一种编码才能被正确地运用。这使我们形成了一个惯性思维:“字符串的编码”。

 

当 UNICODE 被辅助后,Java 中的 String
是以字符的“序号”来存储的,不是以“某种编码的字节”来储存的,因而曾经不设有“字符串的编码”这个定义了。只有在“字符串”与“字节串”转化时,或者,将一个“字节串”当成一个
ANSI 字符串时,才有编码的定义。

 

多多的人都有其一误会。

 

7.3 分析与解决

 

第一种误解,往往是引致乱码爆发的原委。第二种误解,往往导致本来容易纠正的乱码问题变得更扑朔迷离。

 

在此间,我们可以看到,其中所讲的“误解一”,即采纳每“一个字节”就是“一个字符”的转发方法,实际上也就同样采取iso-8859-1 举行转向。因而,我们常常使用 bytes =
string.getBytes(“iso-8859-1”)
来展开逆向操作,拿到原始的“字节串”。然后再使用科学的 ANSI 编码,比如
string = new String(bytes, “GB2312”),来获取正确的“UNICODE 字符串”。

8、参考与尖锐阅读学习材料

8.1 《字符,字节和编码》http://www.regexlab.com/zh/encoding.htm(强烈推荐)

8.2 《关于编码: ascii(ansi), gb-2312, unicode,
utf8》http://blog.csdn.net/omohe/archive/2007/05/29/1630186.aspx

8.3 《Ansi,UTF8,Unicode,ASCII编码的界别》http://hi.baidu.com/%D6%F0%C4%BE/blog/item/772c5944d5e77e8bb3b7dcab.html

8.4 百度健全《Unicode》http://baike.baidu.com/view/40801.htm

8.5 《Unicode与UTF-8/UTF-16之间有甚关系或界别?》http://zhidao.baidu.com/question/52532619.html?fr=ala0

 

出处:http://polaris.blog.51cto.com/1146394/377468

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图