关于charset的⼏种编码⽅式
经常遇到charset=gb2312、charset=iso-8859-1、charset=utf-8这⼏种编码⽅式,它们有什么不同,看下⾯的图
编码⽅式含义
charset=iso-8859-1西欧的编码,英⽂编码
charset=gb2312中⽂编码
charset=utf-8世界通⽤语⾔编码
charset=big5繁体中⽂编码
charset=euc-kr韩⽂编码
除此之外,还有很多其他的编码⽅式,其中charset=utf-8可以⽤到中⽂、韩⽂、⽇⽂等世界上所有语⾔编码上
各个国家和地区制定的不同ANSI编码标准中,都只规定了⾃⼰语⾔需要的“字符”,⽐如汉字标准(GB231
2)中没有规定韩⽂字符怎么存储。制定的ANSI包含两层含义:
字符集:使⽤哪些字符,也就是哪些汉字、字母和符号会被收⼊标准中。
编码:规定每个字符如何存储,即⽤⼏个字节以及哪些字节来存储
在制定ANSI标准的时候,字符集和编码⼀般都是同时制定的。
“unicode”字符集包含了各种语⾔使⽤到的“字符”。由此产⽣了很多“unicode”字符集编码的标准,主要分为下⾯三类。
ISO-8859-1
最简单的编码规则,每⼀个字节直接作为⼀个unicode字符。⽐如,[0xD6, 0xD0] 这两个字节,通过 iso-8859-1转化为字符串
时,将直接得到 [0x00D6, 0x00D0] 两个 unicode 字符,即 “ÖД。
反之,将 unicode 字符串通过 iso-8859-1 转化为字节串时,只能正常转化 0~255 范围的字符。
GB2312、BIG5、Shift_JIS、ISO-8859-2
把 unicode 字符串通过 ANSI 编码转化为“字节串”时,根据各⾃编码的规定,⼀个 unicode 字符可能转化成⼀个字节或多个字
节。
反之,将unicode字节串转化成字符串时,也可能多个字节转化成⼀个字符。⽐如,[0xD6, 0xD0] 这两个字节,通过 GB2312 转化为字符串时,将得到 [0x4E2D] ⼀个字符,即 ‘中’ 字。
“ANSI 编码”的特点:
1. 这些“ANSI 编码标准”都只能处理各⾃语⾔范围之内的 unicode 字符。
2. “unicode 字符”与“转换出来的字节”之间的关系是⼈为规定的。
UTF-8,UTF-16,UnicodeBig
与“ANSI 编码”类似的,把字符串通过 unicode 编码转化成“字节串”时,⼀个 unicode 字符可能转化成⼀个字节或多个字节。
unicode字符转中文与“ANSI 编码”不同的是:
1. 这些“unicode 编码”能够处理所有的 unicode 字符。
2. “unicode 字符”与“转换出来的字节”之间是可以通过计算得到的。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。