Python 2.7韩语字符都变成了?s

时间:2018-04-07 19:33:02

标签: python python-2.7 unicode

我在Windows 10上使用Python 2.7并正在使用韩语文本。我的最终目标是能够导入一些韩文文本,修改它然后将新文本写入文件。

但是,我尝试打印到终端或写入文件的任何韩文文本都会以一系列问号结束。

例如,如果我执行以下操作

>>>print u'가다'

我得到了

??

我曾尝试打印'가다'和'가다'。我还使用sys.setdefaultencoding(ENCODING NAME)尝试了两种不同的编码。我试过的编码是“utf-8”和“iso 8859-15”。

我试过打印你'가다'.encode('utf-8')并打印'가다'.encode('utf-8')

我尝试通过使用ord查看信息丢失的位置,并获得以下信息。

>>> ord(u'가')
63

ord('가')和ord(u'가')都返回63,这与ord('?')相同,所以看起来无论问题出现在我按下回车按钮的那一刻。如果我将'가'或u'가'保存到变量并得到该变量的ord,也会发生同样的情况。

我没有问题让韩文文本在python 3中工作,但我使用的是一个在python 3中不起作用的韩语处理库,所以切换到python 3不是这种情况的选项。任何帮助将非常感激。提前谢谢。

1 个答案:

答案 0 :(得分:1)

在Windows上,包括最新的Windows 10,CommandPrompt和PowerShell都将它们打印的字符限制为“代码页”,该代码页通常是当前定义的大约200,000个unicode字符中的256个。默认情况下,您的Windows设置为您购买它的国家/地区的代码页。

存在utf-8的代码页,但它有错误并且Microsoft拒绝修复它。

对于2.7,使用IDLE运行代码,韩文字符打印正常,因为tkinter使用的tcl / tk文本窗口因此IDLE支持所有前2 ** 16个字符。

韩文文本在3.6+的Windows上运行,因为CommandPrompt的界面被重写为不使用代码页设置。敦促您使用的库的作者生成3.6+兼容版本。