脚本在IDLE中工作但在cmd中不起作用 - 编解码器错误

时间:2012-11-17 15:50:49

标签: python cmd scheduler python-idle

我有一个在IDLE中运行的脚本,但在cmd中运行相同的脚本时却没有。然后我收到了这个错误:

File "C:\Python27\lib\encodings\cp850.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u2013' in position 17: character maps 
to <undefined>

当我尝试打印包含以下部分“ - ”的字符串时,会发生错误。当脚本在IDLE中运行时,一切都很完美。我在Windows 7上使用Python 2.7,我想使用Windows Scheduler来安排脚本,因为我理解它然后在cmd中执行脚本。两个问题:

  1. 为什么我会根据脚本的执行位置以及修复脚本需要做些什么来获得不同的结果?
  2. 是否可以启动“Python(命令行)”以从Windows调度程序运行脚本作为解决方法?

1 个答案:

答案 0 :(得分:1)

Python(以及大多数其他语言)中的I / O基于字节。当您将一个字节字符串(str中的2.x,3.x中的字节)写入文件时,字节只是按原样写入。当您将Unicode字符串(2.x中的unicode,3.x中的str)写入文件时,需要将数据编码为字节序列。要查看进一步说明,请参阅Dive into Python 3 chapter on strings。 使用unicode字符串尝试此操作:

例如:

>>> print(u'\u2013')
–

,而:

>>> print("\u2013")
\u2013