python中的编码
原文:http://users.ir-lab.org/~liulong/blog/archives/001962.html
计算机以0,1二进制位来存储信息,所以字符在计算机中的表示也是二进制位,那每个字符所对应的二进制位是什么,在开始的计算机中因为只考虑英语, 所以不超过256个字符,即用一个字节(8bit)就足可以表示所有的字符,这个对应关系就是对字符的编码,用一个唯一的字节码来表示唯一的字符.但是随 着要对汉字,日语等其他语言的处理,这样的编码满足不了需求,各个地区,国家就针对各自的语言建立了自己的一套编码,比如gb2312,gbk,等 等....这样是解决了一部分问题,但是这就给不同的系统,平台之间的交互造成了很大的障碍,为了解决此问题,出现了unicode,它为每种语言中的每 个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本基准转换、处理的要求。每个字符都用若干个字节来表示,这样就解决了平台,系统之间 的交互问题,但是unicode有个缺点,因为它每个字符都用若干字节来表示,即使是单字节的字符,这就造成了时间和空间上的浪费,因此出现了utf,是 中间转换编码,有utf8,utf16,utf7等.出现了多种编码之后,在不同的系统,平台之间或程序接口中要涉及到编码的转换,常见的转换有:
1.unicode->其它编码
例如:a为unicode编码 要转为gb2312:a.encode('gb2312')
2.其它编码->unicode
例如:a为gb2312编码,要转为unicode: unicode(a, 'gb2312')或a.decode('gb2312')
3,编码1 -> 编码2
先转为unicode再转为编码2
如gb2312转utf8
unicode(a, 'gb2312').encode(utf-8)
目前为止我不知道如何判断一个字符的编码是何种编码,只是从程序中抛异常,等其他方式来判断,但是有可以判断是否是unicode的方法:
isinstance(s, str) 用来判断是否为一般字符串
isinstance(s, unicode) 用来判断是否为unicode
如果要把一定编码的字符序列写到文件里,只要把字符序列编码为所需编码即可,例如:
l = '刘龙'
l = unicode(l, 'cp936')
l = l.encode('utf-8')
open('test.txt','w').write(l)
····呵呵,Unicode就像一个平台,把大家都统一到一起了。但是有点浪费空间啊,所以大家决定自己到了统一平台之后再定制一下也不错。
---顺便推荐一个检测编码类型的好东西codedet:http://chardet.feedparser.org/
Python是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用。它具有简单、易学、免费、开源、可移植性、解释性、面向对象、可扩展性、可嵌入性以及丰富的库等特性, ......
Alex. J. Champandard
赖勇浩(http://laiyonghao.com) 译
原文地址:http://aigamedev.com/open/interviews/inside-galcon-python-ai/
AiGameDev.com在这个周一的 pratical insights 是对Phil Hassey采访。Phil 是一个独立游戏开发者,也是游戏产业社区的活跃分子。他曾赢得2006年4月的 Ludum Dare 比赛(这个比赛关注 ......
下面这个小工具包含了 判断unicode是否是汉字,数字,英文,或者其他字符。 全角符号转半角符号。 unicode字符串归一化等工作。 还有一个能处理多音字的汉字转拼音的程序,还在整理中。
#!/usr/bin/env python
# -*- coding:GBK -*-
"""汉字处理的工具:
判断unicode是否是汉字,数字,英 ......