使用Unicode字符u201c

5
我是一个新手,正在学习Python,并且在理解Unicode方面遇到了问题。我使用的是Python 3.4版本。我花了一整天的时间阅读有关Unicode的文章,包括http://www.fileformat.info/info/unicode/char/201C/index.htmhttp://python-notes.curiousefficiency.org/en/latest/python3/text_file_processing.html
我需要引用特殊引号,因为它们在我分析的文本中被使用。我测试过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>

那么我该如何写才能引用这两个字符u201Cu201D?

在文件打开语句中使用正确的编码选择是否正确?

with open(fileIn, mode='r', encoding='utf-8', errors='replace') as f:

1
你的终端或文件编码是CP-437而不是UTF-8。确保你的终端以UTF-8运行(https://dev59.com/3XRC5IYBdhLWcg3wK9yV#388500),并且你的文件以UTF-8编码(请查看编辑器设置)。 - Klaus D.
1个回答

2

原因在于在3.x版本的Python中,不能将Unicode字符串和字节字符串混合使用。可能您已经阅读了处理Python 2.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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接