1

我有一个可以在 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 调度程序来调度脚本,据我所知,脚本然后在 cmd 中执行。两个问题:

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

1 回答 1

1

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

例如:

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

然而:

>>> print("\u2013")
\u2013 
于 2012-11-18T00:02:15.290 回答