我刚开始使用 Python,我遇到了非英语(尤其是越南语)输入的问题。当我运行这段代码时:
# -*- coding: unicode-escape -*-
s = raw_input()
print(s)
s = "hiển thị 15 dòng"
print(s)
我从终端输入了完全相同的字符串,打印如下:
hiển thị 15 dòng
hi\xe1\xbb\x83n th\xe1\xbb\x8b 15 d\xc3\xb2ng
当我在其他函数中使用这两种类型的字符串时,它也会有所不同,因为我发现第一个不起作用,但第二个起作用。 有人会给我一些提示吗? 谢谢你!
请您参考如下方法:
问题是您在源文件中使用了# -*- coding: unicode-escape -*-。它导致 python 使用 \xnn 十六进制转义转义 UTF-8 表示中大于 128 的所有字节,将您的字符串转换为
'hi\xe1\xbb\x83n th\xe1\xbb\x8b 15 d\xc3\xb2ng'
因此 # -*- coding: unicode-escape -*-:
s = "hiển thị 15 dòng"
会变成
s = 'hi\\xe1\\xbb\\x83n th\\xe1\\xbb\\x8b 15 d\\xc3\\xb2ng'
原因当然是使用unicode-escape作为coding的编解码器;使用 utf-8 代替:
# -*- coding: utf-8 -*-
