我是python的新手,在理解unicode时遇到了一些问题。我使用的是Python 3.4。我花了一整天的时间通过阅读包括http://www.fileformat.info/info/unicode/char/201C/index.htm和http://python-notes.curiousefficiency.org/en/latest/python3/text_file_processing.html在内的unicode来解决这个问题。
我需要引用特殊的引号,因为它们在我正在分析的文本中使用。我确实测试了W7命令窗口可以读写两个特殊引号字符。为了简单起见,我编写了一个一行脚本:
print ('“') # that's the special quote mark in between normal single quotes
并获得以下输出:
Traceback (most recent call last):
File "C:\Users\David\Documents\Python34\Scripts\wordCount3.py", line 1, in <module>
print ('\u201c')
File "C:\Python34\lib\encodings\cp437.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u201c' in position 0: character maps to <undefined>
那么,我该如何编写引用这两个字符u201C
和u201D
的代码呢
这是file open语句中的正确编码选择吗?
with open(fileIn, mode='r', encoding='utf-8', errors='replace') as f:
发布于 2016-02-09 08:42:21
原因是,在3.x Python中,您不能仅将unicode字符串与字节字符串混合。您可能已经阅读过处理Python2.x的手册,其中只要bytestring包含可转换字符,这些事情就是可能的。
print('\u201c', '\u201d')
对我来说没问题,所以唯一的原因是你对源文件或终端使用了错误的编码。
此外,您还可以显式地将python指向您正在使用的代码页,方法是将下一行代码放在源代码的顶部:
# -*- coding: utf-8 -*-
添加:看起来您正在Windows机器上工作,如果是这样,您可以通过运行以下命令将您的控制台代码页更改为utf-8
chcp 65001
在你启动你的python解释器之前。这些更改是暂时的,如果您希望永久更改,请运行下一个.reg文件:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console]
"CodePage"=dword:fde9
https://stackoverflow.com/questions/35281774
复制相似问题