中文编码问题
DESCRIPTION
TRANSCRIPT
![Page 1: 中文编码问题](https://reader036.vdocuments.pub/reader036/viewer/2022082402/548b4efab47959603e8b456f/html5/thumbnails/1.jpg)
中文编码处理蔡啸 2011/9/15
![Page 2: 中文编码问题](https://reader036.vdocuments.pub/reader036/viewer/2022082402/548b4efab47959603e8b456f/html5/thumbnails/2.jpg)
提纲 引子
基本概念
实际应用
![Page 3: 中文编码问题](https://reader036.vdocuments.pub/reader036/viewer/2022082402/548b4efab47959603e8b456f/html5/thumbnails/3.jpg)
引子 乱码是一个很烦人的,而且历史悠久的问
题。从很遥远的时代这个问题就已经存在了。比如:
![Page 4: 中文编码问题](https://reader036.vdocuments.pub/reader036/viewer/2022082402/548b4efab47959603e8b456f/html5/thumbnails/4.jpg)
基本概念 ( 一 )
字符集 : 一组具有共同特征抽象字符的集合 GBK :大陆使用的中文字符集标准 CJK :中日韩统一表意文字 UNICODE: 万国码 (6.0 支持 109449 个字
符 ) 17 个语言平面(每个平面 65536 个字符 ) Plane0 ,亦称为 BMP
![Page 5: 中文编码问题](https://reader036.vdocuments.pub/reader036/viewer/2022082402/548b4efab47959603e8b456f/html5/thumbnails/5.jpg)
基本概念 ( 二 )
字符编码 : 字符和二进制内码的对应码表 ASCII:最古老的字符编码,用于支持英文字符、数字和基本的控制字符 UTF8 UCS 2/ UTF-16 ( 用 16 位或 32 位表示字符 ) UCS 4/ 32 位表示
![Page 6: 中文编码问题](https://reader036.vdocuments.pub/reader036/viewer/2022082402/548b4efab47959603e8b456f/html5/thumbnails/6.jpg)
基本概念 ( 三 )
例子: 汉字 蔡啸
unicode u\8521 u\5578
gbk \xb2\xcc\xd0\xa5
utf8 \xe8\x94\xa1\xe5\x95\xb8
utf16 \xff\xfe\x21\x85\x78\x55
![Page 7: 中文编码问题](https://reader036.vdocuments.pub/reader036/viewer/2022082402/548b4efab47959603e8b456f/html5/thumbnails/7.jpg)
实际应用 (python)
普通字符串 unicode 字符串注 :2.x 版本的字符串的编码是系统相关的比如 :>>> s = " 蔡啸 "'\xb2\xcc\xd0\xa5’ #windows'\xe8\x94\xa1\xe5\x95\xb8’ #linux
![Page 8: 中文编码问题](https://reader036.vdocuments.pub/reader036/viewer/2022082402/548b4efab47959603e8b456f/html5/thumbnails/8.jpg)
实际应用 (JavaScript)
JavaScript 内部使用 unicode 表示字符
有用的字符编码函数 :escape // 获取字符的 unicode 表示encodeURI // 获取字符的 utf-8 表示
![Page 9: 中文编码问题](https://reader036.vdocuments.pub/reader036/viewer/2022082402/548b4efab47959603e8b456f/html5/thumbnails/9.jpg)
实际应用 (HTML)
浏览器中如何确定页面的字符编码? http 头中的 Content-Type html 页面中的 meta 标签中指定 charset 页面正文数据(浏览器可以解析正文二进制码来
判断编码)另外两个因素: 浏览器默认编码 操作系统语言类型
![Page 10: 中文编码问题](https://reader036.vdocuments.pub/reader036/viewer/2022082402/548b4efab47959603e8b456f/html5/thumbnails/10.jpg)
实际应用 (URL)
URL 的规范 : RFC1738 URL 必须由英文字母,数字和某些标点符号组成当在 URL 中包含中文字符时,浏览器会对其进行编码
在地址栏里输入 : http://www.google.com.hk/search?q=蔡啸
![Page 11: 中文编码问题](https://reader036.vdocuments.pub/reader036/viewer/2022082402/548b4efab47959603e8b456f/html5/thumbnails/11.jpg)
总结 要点:
windows 下中文默认为 GBK 编码 linux 下中文一般为 UTF8 编码 尽可能使用 UTF8 作为编码格式
![Page 12: 中文编码问题](https://reader036.vdocuments.pub/reader036/viewer/2022082402/548b4efab47959603e8b456f/html5/thumbnails/12.jpg)
参考资料1. 维基 unicode 条目
http://en.wikipedia.org/wiki/Unicode 2. 维基 gbk 条目 http://zh.wikipedia.org/wiki/GBK3. 维基 UTF16 条目 http://en.wikipedia.org/wiki/UTF-
16/UCS-2 4. 维基 UTF8 条目
http://zh.wikipedia.org/wiki/UTF-8#UTF-8.E7.BC.96.E7.A0.81.E5.AD.97.E8.8A.82.E5.90.AB.E4.B9.89
5. 前端工程师的编码遭遇战 http://ued.taobao.com/blog/2011/08/26/encode-war/
6. 编码大全 http://www.slideshare.net/lijing00333/ss-9016595?from=ss_embed