关于python unicode的实验
实验环境:windows xp + vim
文件:test.py。编码:ansi
我们的目标操作test.py中保存的非英文字母。
文件头的#encoding=utf8/gbk,这个是用来说明源文件的硬盘编码以便python识别[4]。
----------------------------------------------
输入:
x = '中文'
输出: 编译失败
编译时需要知道‘中文’的硬盘编码(#encoding=utf8...)。
----------------------------------------------
输入:
#encoding=utf8
x = '中文'
输出: 编译失败
#encoding=utf8与实际源文件的编码不一致(ansi)
----------------------------------------------
#encoding=gbk
x = '中文'
输出:编译成功
同样,把文件存为utf8, 内容改为:
#encoding=utf8
x = '中文'
输出:同样编译成功
----------------------------------------------
#encoding=gbk
' 中文'.decode('gbk')
输出:编译成功
----------------------------------------------
#encoding=gbk
x = '中文'.decode('utf8')
输出: 编译失败。'中文'二字在python当前的内存中是gbk编码,因此只能用gbk decode.
----------------------------------------------
#encoding=gbk
x = '中文'.decode()
输出: 编译失败。因为decode无参数,系统则默认地认为'中文'二字是ascii, 从而尝试将ascii编为unicode。由于'中文'二字在python当前的内存中是gbk编码,只能用gbk decode,因此报错
----------------------------------------------
#encoding=gbk
x = u'中文'.encode('gbk')
print type(u'中文'),type(x),x
输出: <type 'unicode'> <type 'str'> 中文。
----------------------------------------------
#encoding=gbk
x = u'中文'.encode('utf8')
print type(u'中文'),type(x),x
输出:
<type 'unicode'> <type 'str'> 涓枃。虽然还是能运行,但是输出了错误结果,因为实际编码(gbk)和声明的编码(utf8)不匹配
----------------------------------------------
#encoding=gbk
x = ['中文', u'中文', '中文'.decode('gbk')]
print x
输出:
['\xd6\xd0\xce\xc4', u'\u4e2d\u6587', u'\u4e2d\u6587']
----------------------------------------------
#encoding=gbk
x = 'スマ'
print x
输出:
スマ。完全正确。print会把'スマ'转换为'gbk'打印(实际是把‘'スマ'交给操作系统打印,操作系统默认用gbk打
相关文档:
1 在想要插入断点的地方插入代码
import pdb
pdb.set_trace()
2然后使用指令进行debug
查看代码上下文,l(小写L)
监视变量 ......
1.c调用python:
实例代码:
main.c调用test.py的
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//main.c
#include <windows.h>
......
最近,想在我的YouMoney(http://code.google.com/p/youmoney/)里面增加提取用户操作系统版本信息。比如windows用户,可能要返回Windows XP ,或者Windows 2003, 苹果用户应该返回Mac OS X 10.5.8。用了很多办法,包括在mac系统里调用系统命令,取环境变量,等等。最后无意发现,原来python里里面有个pl ......