我对wx和python有一个问题,这似乎是unicode的问题。
我使用的是便携式python 2.7.2.1和wx-2.8-msw-unicode。
在失败的时候,我的python代码是这样的:
listbox.AppendText("\n " + dparser.parse(t['created_at']).strftime('%H-%M-%S') + " " +t['text'] + "\n")
T‘文本’ 有一个值:"RT @WebbieBmx:“@AlexColebornBmx:http://t.co/cN6zSO69”查看这条#retweet“
在运行python的DOS窗口中打印时,python显示如下:
‘'RT @WebbieBmx:\xe2\x80\x9c@AlexColebornBmx:http://t.co/cN6zSO69\xe2 \x80\x9--看这个#retweet’
追踪结果是:
追溯(最近一次调用):文件"myprogs\Search_db_dev.py",第713行,在onSubmit self.toField.GetLineText(0)文件中,文件“F:\便携\便携Python 2.7.2.1\App\myprogs\process_form2_dev.py",l ine 575,在display_Tweets中 (“\n”+ dparser.parse(t'created_at').strftime('%H-%M-% S') +“+t‘’text‘+”\n) 文件“F:\便携\便携Python 2.7.2.1\App\lib\site-packages\wx-2.8-msw-uni code\wx_controls.py",第1850行,AppendText 返回_controls_.TextCtrl_AppendText(*args,**kwargs) 文件“F:\便携\便携Python 2.7.2.1\App\lib\encodings\cp1252.py",第1行,在 解码返回codecs.charmap_decode(输入、错误、decoding_table) UnicodeDecodeError:“charmap”编解码器无法解码位置73的字节0x9d : chara cter映射到未定义的
UnicodeDecodeError似乎发生在正确的双引号(\xe2\x80\x9d)的末尾,但我不明白为什么。如果能提供任何帮助,我将不胜感激。
恐怕这是一个简单的编码问题
发布于 2012-10-24 23:35:08
当我查看回溯时,对cp1252的引用让我感到恶心,因为文本是utf8 (正如人们在处理tweet文本时可能会想到的那样)。左边的utf8序列( \xe2 \x80\x9c)似乎没有引起问题,但在第二个十六进制序列中的\xE2之后似乎有一个空格,这将阻止它从utf8正确解码。当我移除那个空间时,解码问题就消失了。因此,您得到了一些不好的utf8,我不知道当您从原始源接收到它时,除了在try语句中显式解码之外,您还将如何防范它。这有道理吗?
发布于 2012-10-24 23:15:32
是的,这是一个简单的编码问题。
您不明白为什么您的字体没有区分u'”'
和u'"'
的原因。前者是一个卷曲的封闭引号,它是UTF-8中的'\xe2\x80\x9d'
.最常见的情况是在编辑器(如MS )中编辑“智能引号”中的文本文件。
但是,您现在发现了这个问题是很好的,否则,在您将脚本交给某个中国用户…之前,一切看起来都是正常的。
无论如何,这里的问题是,您有一些存储UTF-8字符串的代码,还有一些其他代码试图访问它们,就好像它们处于默认编码状态( Windows字符集)。如果没有看到更多的代码,很难确定您到底做错了什么,但是希望这是足够的信息来跟踪它。
https://stackoverflow.com/questions/13058784
复制相似问题