Mac终端编码问题

时间:2016-09-13 14:47:53

标签: python macos encoding utf-8 terminal

我一直在处理有关Macbook中终端的问题。 我在python字符串中传递希腊语单词,例如

text = 'Καλημέρα κόσμε' 

每次我尝试执行任何简单的任务就像拆分空格一样,我得到的结果如下:

['\xce\x9a\xce\xb1\xce\xbb\xce\xb7\xce\xbc\xce\xad\xcf\x81\xce\xb1',  
'\xce\xba\xcf\x8c\xcf\x83\xce\xbc\xce\xb5']

当我使用collections.Counter()函数时也会发生同样的事情。

另一方面,当我打印字符串时,输出符合预期:

Καλημέρα κόσμε

我尝试过这里提到的内容:In OSX Lion, LANG is not set to utf8, how fix?(通过将en_US.UTF-8更改为el_GR.UTF-8)没有任何运气。

任何人都知道为什么会发生这种情况以及如何解决这个问题?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

这不是您的终端的问题,而是Python(2)如何做事。

即使您没有对其执行任何任务,repr也将转义任何非ASCII(或不可打印(空格除外))字符:

>>> text = 'Καλημέρα κόσμε'
>>> text
'\xce\x9a\xce\xb1\xce\xbb\xce\xb7\xce\xbc\xce\xad\xcf\x81\xce\xb1 \xce\xba\xcf\x8c\xcf\x83\xce\xbc\xce\xb5'

如果您在Python 3中尝试相同的操作,它将正常打印:

>>> text = 'Καλημέρα κόσμε'
>>> text
Καλημέρα κόσμε

你有没有理由使用Python 2?