我在qu-GIS中有一个小Python代码,可以打开对象。我遇到的问题是目录中有一个字符(类似下划线的字符)无法编码。错误是:
Traceback (most recent call last): File "", line 1, in UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 10: ordinal not in range(128)
我的小密码是:
from os import startfile;
proj = QgsProject.instance();
UriFile = str(proj.fileName());
img = '[% "pad" %]';
Path = str(os.path.dirname(UriFile));
startfile(Path+img)
由于我的编程技巧很小,我请你帮我在这个小代码中添加一些代码来克服这个问题。
经过大量的搜索,我找不到办法,但通过这个我可以忽略它
OBJECT
.encode('ascii','ignore')谢谢你的回答
我在python代码中将str替换为unicode中找到了答案,请参见下面的代码。
我假设:
QgsProject.instance().fileName()
是一个unicode字符串,包含一个EN-DASH(unicode char U+2013:–)它看起来像一个普通的破折号(unicode char U+2D:-),但它不存在于ASCII或任何通用的8bit字符集中。这个错误是正常的:在Python2中,unicode字符串到普通的8bit字符串的转换使用ASCII字符集。
解决方法:
可以使用显式编码,要求对未映射的字符使用替换字符:
至少你会看到冒犯的角色发生在哪里。
解决方案:
您应该使用完整的unicode处理(并使用Python3),或者确保处理的所有字符串都可以在当前字符集中表示(通常是latin1)
或者,如果在您的用例中有意义,您可以尝试使用UTF8编码,它可以成功地以1、2或3字节表示任何UNICODE字符:
相关问题 更多 >
编程相关推荐