Unicode 简介

 Unicode是一个体系,用来表示世界上所有不同语言的字符。在Python解析一个XML文档时,所有的数据都是以Unicode形式保存在内存中的。

为什么会有Unicode?
在Unicode产生之前,每种语言都有一套独立存在的字符编码体系,每个系统都用(0-255)之间的数字表示这种语言中的字符。一些语言(如俄语)对如何表示相同的字符还有几种有冲突的标准。另一些语言(如日语)有太多字符,需要多个字符集。在这些不同的体系之间进行文档交流变得比较困难,因为对一台计算机来说,没法识别文档的作者用了哪种编码方式,计算机看到的只是数字,但是这些数字在不同的体系,表示不同的东西。

下面考虑,如果试图把这些文档(采用了不同的编码方式)放到一个地方(比如数据库表中),你需要在每段文本的旁边保存字符的编码,并确保在传递文本时把对应的编码也传递了。再考虑多语言文档,在一个文档中使用了不同语言的字符(较有代表性的是用转义符进行模式转换,如我们在俄语koi8-r模式下,字符241代表一个意思,在Mac希腊语模式下,字符241又代表其它的意思),所有这些是Unicode被设计出要解决的问题。

Unicode用一个2字节的数字表示每个字符,从0到65535。每个2字节数字表示至少在一种世界语言中使用的唯一字符。(在多种语言中都使用的字符具有相同的数字码。) 这样就确保每个字符一个数字,并且每个数字一个字符。Unicode 数据永远不会模棱两可。

当然,仍然还存在着所有那些遗留的编码系统的情况。例如,7 位 ASCII,它可以将英文字符存诸为从 0 到 127 的数值。(65 是大写字母 “A”,97 是小写字母 “a”,等等。) 英语有着非常简单的字母表,所以它可以完全用 7 位 ASCII 来表示。像法语、西班牙语和德语之类的西欧语言都使用叫做 ISO-8859-1 的编码系统 (也叫做“latin-1”),它使用 7 位 ASCII 字符表示从 0 到 127 的数字,但接着扩展到了 128-255 的范围来表示像 n 上带有一个波浪线(241),和 u 上带有两个点(252)的字符。Unicode 在 0 到 127 上使用了同 7 位 ASCII 码一样的字符表,在 128 到 255上同 ISO-8859-1 一样,接着使用剩余的数字,256 到 65535,扩展到表示其它语言的字符。

在处理 unicode 数据时,在某些地方你可能需要将数据转换回这些遗留编码系统之一。例如,为了同其它一些计算机系统集成,这些系统期望它的数据使用一种特定的单字节编码模式,或将数据打印输出到一个不识别 unicode 的终端或打印机。或将数据保存到一个明确指定编码模式的 XML 文档中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值