【发布时间】:2014-07-14 20:43:39
【问题描述】:
使用 Python3.3
运行 python 脚本进行一些 CAD 文件转换,但出现以下错误
Conversion Failed
Traceback (most recent call last):
File "Start.py", line 141, in convertLib
lib.writeLibrary(modFile,symFile)
File "C:\Python33\Eagle2Kicad/Library\Library.py", line 67, in writeLibrary
self.writeSymFile(symFile)
File "C:\Python33\Eagle2Kicad/Library\Library.py", line 88, in writeSymFile
devicepart.write(symFile)
File "C:\Python33\Eagle2Kicad/Common\Symbol.py", line 51, in write
symbol.write(symFile)
File "C:\Python33\Eagle2Kicad/Common\Symbol.py", line 114, in write
symFile.write(pin.symRep())
File "C:\Python33\Lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\x96' in position 4: character maps to <undefined>
我的 Windows7 命令提示符中的首选编码似乎是 NOT cp1252(键入 chcp 显示“活动代码页 437”)。怎么改成cp1252?
谁能推荐一下?
编辑:
由于 python 命令行的默认首选编码是 cp1252,我尝试从 python 命令行而不是 windows 命令提示符运行脚本。但我仍然遇到与上述相同的错误。谁能推荐一下?
【问题讨论】:
-
您正在写入文件。文件的默认编码是
locale.getpreferredencoding(False),并且不是由您的控制台设置决定的;改为在打开文件时指定显式编码。 -
请注意,您通常会向我们展示触发异常的代码;我必须在这里假设
symFile.write(pin.symRep())中的symFile是用open(filename, 'w')或类似文件打开的文件对象。 -
您可以使用 cmd 启动脚本来配置控制台(
chcp、color、title)、设置环境变量和加载 doskey 别名。我使用"%APPDATA%\autorun.cmd"并设置一个注册表项以在 cmd 启动时运行此脚本:reg add "HKCU\Software\Microsoft\Command Processor" /f /v AutoRun /t REG_EXPAND_SZ /d "\"^%APPDATA^%\autorun.cmd\"" -
@MartijnPieters 谢谢。它在显式添加编码类型
open(modFileName,'w', encoding='utf-8').close()open(symFileName,'w', encoding='utf-8').close()modFile=open(modFileName,"a", encoding='utf-8')symFile=open(symFileName,"a", encoding='utf-8')
标签: python encoding character-encoding command-prompt