这个问题与Getting file path with umlauts from command line arguments under win7 using a batch file有关,但还有另一个问题。我安装了win_unicode_console。我打开了一个控制台窗口并通过chcp.com 65001>更改了代码页。 nul然后我在一个带有变音符号的路径中启动了一个python脚本,在这个控制台中可以正常运行,但程序会抛出这个错误:
self.fid = self.id[self.currentQ][0]
connection.execute ("UPDATE UserRank SET CorrectScore = CorrectScore + 1 WHERE User = ? AND FlashcardID = ? ",([self.username]+[self.fid])
程序抱怨“打印错误”,因为这是我尝试捕获异常的方式:
Traceback (most recent call last):
File "C:\path\to\script.py",
line 205, in <module>
print err
File "C:\python27\lib\site-packages\win_unicode_console\streams.py", line 256,
in write
self.base.write(s)
File "C:\python27\lib\site-packages\win_unicode_console\streams.py", line 216,
in write
return self.base.write(s)
File "C:\python27\lib\site-packages\win_unicode_console\streams.py", line 165,
in write
raise exc
WindowsError:
在......主要代码......部分内有一行
try:
... main code ...
except Exception, err:
print err
这个'ä'字符导致错误,但我不明白为什么。我尽我所能使编码正确但控制台输出崩溃了所有内容。
如果我不通过chcp更改控制台的代码页,正如eryksun建议的那样,错误消失了但是有一个新问题。 该脚本接收包含特殊字符(如“ä”)的文件路径。该脚本首先打开文件没有问题,但无法写回数据
print 'ausgewählte Konfiguration:'
答案 0 :(得分:0)
好的,我发现了一种有效的方法。按原样使用文件路径导致Unicodedecodeerror但在使用
之后2*testVector - test1
9
-273
-126
-48
39
2*testVector - test2
9
-273
-126
-48
39
现在一切正常。
实际上,我不明白为什么会这样。我猜命令行参数的处理是由win_unicode_console完成的。这就是脚本可以从命令行读取包含“ä”的文件路径的原因。它可能已经编码为代码页850(?)然后文件路径保存在对象属性中。 python脚本尝试使用utf-8对其进行解码,但失败了,这就是为什么我必须先解码windows编码。然后用utf-8解码成功。也许有人可以更详细地阐明这一点。