中文编码问题

12
中中中中中中 中中 2011/9/15

Upload: dynaturtle

Post on 13-Dec-2014

588 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 中文编码问题

中文编码处理蔡啸 2011/9/15

Page 2: 中文编码问题

提纲 引子

基本概念

实际应用

Page 3: 中文编码问题

引子 乱码是一个很烦人的,而且历史悠久的问

题。从很遥远的时代这个问题就已经存在了。比如:

Page 4: 中文编码问题

基本概念 ( 一 )

字符集 : 一组具有共同特征抽象字符的集合 GBK :大陆使用的中文字符集标准 CJK :中日韩统一表意文字 UNICODE: 万国码 (6.0 支持 109449 个字

符 ) 17 个语言平面(每个平面 65536 个字符 ) Plane0 ,亦称为 BMP

Page 5: 中文编码问题

基本概念 ( 二 )

字符编码 : 字符和二进制内码的对应码表 ASCII:最古老的字符编码,用于支持英文字符、数字和基本的控制字符 UTF8 UCS 2/ UTF-16 ( 用 16 位或 32 位表示字符 ) UCS 4/ 32 位表示

Page 6: 中文编码问题

基本概念 ( 三 )

例子: 汉字 蔡啸

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: 中文编码问题

实际应用 (python)

普通字符串 unicode 字符串注 :2.x 版本的字符串的编码是系统相关的比如 :>>> s = " 蔡啸 "'\xb2\xcc\xd0\xa5’ #windows'\xe8\x94\xa1\xe5\x95\xb8’ #linux

Page 8: 中文编码问题

实际应用 (JavaScript)

JavaScript 内部使用 unicode 表示字符

有用的字符编码函数 :escape // 获取字符的 unicode 表示encodeURI // 获取字符的 utf-8 表示

Page 9: 中文编码问题

实际应用 (HTML)

浏览器中如何确定页面的字符编码? http 头中的 Content-Type html 页面中的 meta 标签中指定 charset 页面正文数据(浏览器可以解析正文二进制码来

判断编码)另外两个因素: 浏览器默认编码 操作系统语言类型

Page 10: 中文编码问题

实际应用 (URL)

URL 的规范 : RFC1738 URL 必须由英文字母,数字和某些标点符号组成当在 URL 中包含中文字符时,浏览器会对其进行编码

在地址栏里输入 : http://www.google.com.hk/search?q=蔡啸

Page 11: 中文编码问题

总结 要点:

windows 下中文默认为 GBK 编码 linux 下中文一般为 UTF8 编码 尽可能使用 UTF8 作为编码格式

Page 12: 中文编码问题

参考资料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