和前一篇的起因一样,也是在使用
wxPython
的时候。因为不是每个人都熟悉英文(事实上,我总认为不熟悉或者说是生疏与英文的人,大多憎恨英文),不可避免的,需要显示一些中文。但是运行的结果显示大体如“
Syntax Error: Non ASCII character in ‘\xc4’….
”的错误提示。按照
Dive into Python
的解释,这是因为
python
默认使用
ASCII
编解码,而中文显然不是标准的
ASCII
。
按照文中的解决办法,是要在程序的第一或二行键入形如“
# -*- coding:
gbk -*-
”或者将其中的
gbk
改为
cp936
,这有什么不同。不过也许因为一些大牛习惯的缘故,使用
cp936
更酷一点。
Google
中的一种简单的写法是“
#coding=cp936
”(需要注意的是和
bash
的语法相类似的,“
=
”两旁不能有空格),不过这样没有前一种来得顺眼,可按个人爱好任意选择。
这样看来,问题似乎解决了。不过事事难预料,由于程序需要对
sqlite
进行读写,在将这些中文写入数据库的时候也出现了编解码错误的提示。看来
pysqlite
似乎只能处理
unicode
的数据,用惯了
perl
的
DBI
,一时还无法接受这一而再烦人的错误。
解决的办法是将中文用
unicode
实例化,然后在传给
pysqlite
,具体如:
u’
你好
’
这样。但是对于变量不能这样简化做,甚至于
u’%s’ % niha
(其中
nihao
被赋值了‘你好’)的形式也不行。这里我们需要用
unicode
的完整形式,
unicode(nihao, ‘cp936’)
。