输入 Python

Input in Python

我刚开始使用 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 -*-替换为# -*- coding: utf-8 -*-来指定代码文件的编码,这取决于您的系统默认文件编码。

我假设您正在使用 Python 2.x?

如果是这样,请将以下内容放在文件的顶部:

# -*- coding: utf-8 -*-

并确保您的字符串是 unicode 字符串:

s = raw_input().decode("utf-8").
print(s)

s = u"hiển thị 15 dòng"
print(s)

问题是您在源文件中使用了 # -*- 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 -*-