Home >Backend Development >PHP Tutorial >关于编码:ansi、gbk、gb2312、utf8、utf16、utf32、Unicode

关于编码:ansi、gbk、gb2312、utf8、utf16、utf32、Unicode

WBOY
WBOYOriginal
2016-06-06 20:43:391179browse

从接触编程以来,一直对编码的知识一知半解,总没有掌握精髓。
比如:ansi和gbk的关系,gbk和gb2312又有何关系,ansi和utf8有何区别,Unicode又和utf8是什么关系,以及ansi、gbk、gb2312、utf8(有无Bom之分)、utf16、utf32、Unicode之间的相互转换等等,心中的疑问总没有找个机会解决下,希望能在segmentfault得到满意的答案。


如果有这方面的书籍的话(javascript的最好了,因为刚好是在javascript中碰到的问题),最好不过了!


汇总

书籍
《fonts and encodings》只找到英文版
许令波的《深入分析Java Web技术内幕》3.3节

文章
字符编码笔记:ASCII,Unicode和UTF-8
谈谈Unicode编码
UNICODE,GBK,UTF-8区别
Unicode字符集和多字节字符集关系
谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
分析记事本写联通两字出现乱码的原因1
分析记事本写联通两字出现乱码的原因2
小代码大学问之JavaScript位运算

其他:
字体编辑用中日韩汉字Unicode编码表
关于编码:ansi、gbk、gb2312、utf8、utf16、utf32、Unicode

回复内容:

从接触编程以来,一直对编码的知识一知半解,总没有掌握精髓。
比如:ansi和gbk的关系,gbk和gb2312又有何关系,ansi和utf8有何区别,Unicode又和utf8是什么关系,以及ansi、gbk、gb2312、utf8(有无Bom之分)、utf16、utf32、Unicode之间的相互转换等等,心中的疑问总没有找个机会解决下,希望能在segmentfault得到满意的答案。


如果有这方面的书籍的话(javascript的最好了,因为刚好是在javascript中碰到的问题),最好不过了!


汇总

书籍
《fonts and encodings》只找到英文版
许令波的《深入分析Java Web技术内幕》3.3节

文章
字符编码笔记:ASCII,Unicode和UTF-8
谈谈Unicode编码
UNICODE,GBK,UTF-8区别
Unicode字符集和多字节字符集关系
谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
分析记事本写联通两字出现乱码的原因1
分析记事本写联通两字出现乱码的原因2
小代码大学问之JavaScript位运算

其他:
字体编辑用中日韩汉字Unicode编码表
关于编码:ansi、gbk、gb2312、utf8、utf16、utf32、Unicode

ANSI是标准集,美国国家标准协会,涵盖多方面,类似大陆的国标
win下的ANSI是狭义的,指的是当前系统的编码,相当于code page

GB2312是国标,双字节字符集,但制定年份较早,包含的汉字(含标点符号等)较少
GBK是在GB2312的基础上扩展的,利用其中未被使用的码位,纳入更多的汉字和符号,所以一般情况下应该用GBK而不是GB2312。网页使用gb2312没问题是因为网页本身只是显示,取决于客户端的字体,即使超出gb2312编码范围的字符,只要字体包含就能显示,目前客户端的字体基本上都是足够显示gbk的,不会只有gb2312那么少字符,所以显示完全没问题。但编程时这两个就要分清楚,因为gb2312的字符数量少,容易造成转码错误,所以应该用gbk

unicode是字符集,其实是个码表,不是具体的编码,具体的编码是uc2,uc4,utf-7,utf-8,utf-16,utf-32等,uc是定长,每个字符字节数相同,utf是变长,字符视乎unicode的码位段字节数不同
windows下的unicode指的是utf-16,这样就有点混淆了概念
bom的概念是在文件最前面加上几个特定字节,以方便识别这是一个unicode某个编码的文本

编码间的转换一般用码表,这个一般如果不是研究,用现有的一些控件或接口就可以了,例如iconv等

深入分析Java Web技术内幕 许令波写的 3.3节
上面这书是我见过的对编码解释的最清晰的了 可以找找看看

百度一下,一大堆的博客介绍这个。

http://blog.csdn.net/garfield2005/article/details/7681299

http://www.cnblogs.com/cy163/archive/2007/05/31/766886.html

...

推荐下阮一峰写的一篇入门的文章: http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn