我知道这个问题并不新鲜,但我不知道如何解决它。我需要转换一个.opl文件(vim大纲格式)到.mm (自由思想)。重点是,原始文件是用意大利语编写的,所以充满了重音,在使用python脚本(plugin)进行转换的过程中,我得到了一个unicode错误。这就是细节
python outline_freemind.py test.otl > test.mmFile "outline_freemind.py", line 114, in <module>
xmltree.write(sys.stdout, 'utf-8')
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 815, in write
serialize(write, self._root, encoding, qnames, namespaces)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 934, in _serialize_xml
_serialize_xml(write, e, encoding, qnames, None)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 934, in _serialize_xml
_serialize_xml(write, e, encoding, qnames, None)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 934, in _serialize_xml
_serialize_xml(write, e, encoding, qnames, None)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 927, in _serialize_xml
v = _escape_attrib(v, encoding)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1085, in _escape_attrib
return text.encode(encoding, "xmlcharrefreplace")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 9: ordinal not in range(128)我试着在脚本的开头插入
# -*- coding:utf-8-*-没有成功。
发布于 2014-05-21 01:19:07
您的插件声明的编码与您遇到的问题无关:声明的唯一目的是告诉Python解释器程序本身的编码,并且您的程序不包含超出ASCII范围的字符,因此不可能产生误解。
如果问题与程序的编码有关,则会得到如下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "outline_freemind.py", line 115
SyntaxError: Non-ASCII character '\xc3' in file outline_freemind.py on line 115, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details..。但是由于你实际上得到了一个UnicodeDecodeError,这意味着错误发生在你的插件对非ASCII码输入的处理中……所以你应该把这个报告给插件的作者。
https://stackoverflow.com/questions/23765672
复制相似问题