在Python 3.6.5中打印Unicode字符
问题的原因是使用的文本编辑器的编码方式不正确。Python默认将文件读取为UTF-8编码,但是由于文件不是UTF-8编码,导致读取失败。如果使用cp1252或类似的Windows传统编码方式编辑文件,将会导致"•"编码为"\x95",这不是有效的UTF-8编码,因为UTF-8字符的编码要么小于0x80,要么是大于等于0xC0的起始字节。因此会出现错误。("•"的UTF-8编码是"\xe2\x80\xa2")
解决方法有几种:
1. 如果你在Eclipse中配置了使用系统默认编码而不是UTF-8来编辑源代码,请修改配置。具体修改方法可以参考这个问题,在不同版本的Eclipse中修改默认编码的方法可能有所不同,可以尝试在"Preferences | General | Workspace | Text File Encoding"或"Preferences | General | Editors | Text editors"中进行设置。此外,在"Editor"下可能还有特定语言的编码设置,还可以设置每个项目的编码。
2. 另一种可能性是,Eclipse会自动检测现有文件的编码并保留它,而不是使用自己的首选编码。由于你使用的是Windows系统,很可能最初是用记事本或其他不适合编程的Windows编辑器创建的文件,默认使用的是系统的"OEM代码页"编码。如果是这样,请不要使用记事本编辑源代码。虽然可以强制记事本将文件导出为UTF-8编码,但这很麻烦(而且你的文件中可能会出现UTF-8-SIG前缀的问题)。
若要解决此问题,只需手动将文件另存为UTF-8一次,从此以后它将自动检测为UTF-8并正常工作。
3. 或者,你可以选择将文件保留在cp1252或其他编码方式,并使用PEP-263编码声明来覆盖默认的UTF-8编码。但是使用UTF-8编码会更加方便。
感谢你的回答!我需要将默认编码更改为UTF-8,与你在答案的第二部分中提到的类似(来自pydev.org/manual_101_eclipse.html)。