我正在Windows 10上使用Python 2.7,并且正在使用韩文文本。我的最终目标是能够导入一些韩文文本,对其进行修改,然后将新文本写入文件中。
但是,我尝试打印到终端机或写入文件的任何韩文文本都将出现一系列问号。
例如,如果我执行以下操作
>>>print u'가다'
我懂了
??
我尝试过同时打印为“가다”和“ u'가다”。我还尝试了使用sys.setdefaultencoding(ENCODING NAME)的两种不同的编码。我尝试过的编码是“ utf-8”和“ iso 8859-15”。
我尝试打印u'가다'.encode('utf-8')并打印'가다'.encode('utf-8')
我尝试通过使用ord来查看信息丢失的时间,并获得以下信息。
>>> ord(u'가')
63
ord('가')和ord(u'가')都返回63,这与ord('?')相同,因此似乎所有问题出在我按下Enter键时。如果我将'가'或u'가'保存到变量中并获取该变量的ord,也会发生同样的情况。
我没有让朝鲜文字在python 3中工作的问题,但是我使用的朝鲜语处理库在python 3中不起作用,因此在这种情况下切换到python 3并不是一种选择。任何帮助将非常感激。先感谢您。
最佳答案
在Windows(包括最新的Windows 10)上,CommandPrompt和PowerShell都将它们打印的字符限制为“代码页”,通常是当前定义的大约20万个Unicode字符中的256个。默认情况下,Windows设置为购买国家/地区的代码页。
有一个用于utf-8的代码页,但是它有错误,Microsoft拒绝修复它。
对于2.7,请使用IDLE运行您的代码,韩文字符将可以正常打印,因为tkinter使用的tcl / tk Text窗口以及IDLE支持所有前2 ** 16个字符。
韩文文本在Windows 3.6及更高版本上适用于Windows,因为CommandPrompt的界面已重写为不使用代码页设置。敦促您使用的库作者生成兼容3.6+的版本。