我正在尝试解决中文编码问题。到目前为止,我面前的唯一障碍是正确显示用户在 raw_input()
中输入的内容。例如,我关于这部分的抽象解决方案是这样的:
#coding: utf-8
name_a = raw_input('请输入文字')
print name_a
但是这样我只能正确显示“请输入文字”。如果用户在 raw_input() 中输入中文字符,则打印 name_a 将显示 utf-8 代码点,如 '/xb7'
无论如何,我在网上搜索了一下,发现这段代码可以解决我的问题:
#coding: utf-8
n=raw_input(unicode('请输入文字','utf-8').encode('gbk'))
print n
成功了!但是当我尝试将它植入我自己的代码中时。我的代码无法执行。而且更奇怪的事情发生了。后来当我将此代码复制到其他空文件中时,它也无法工作。眨眼间程序就结束了(我知道Windows环境下python的特性,所以在文件末尾添加了x = input()
)。后来我删除了包含第二个代码段的原始测试py文件。现在我无法在任何新创建的文件中执行它。
我在Windows XP环境下使用Python 2.7
发生了什么?
还有其他方法可以帮助我显示用户在 raw_input()
中输入的中文内容吗?
非常感谢。
最佳答案
这对我有用:
x = raw_input(u'请输入文字'.encode("utf8"))
此外,我成功地能够 print(x)
并让它显示中文字符,因此这可能是您遇到的操作系统(或终端客户端)字体渲染问题。
旁注:切勿在 Python 2.x 中使用 input()
。它隐式地eval
s用户输入的所有数据(input()
== eval(raw_input())
),所以类似于 __import__("os").system("rm -rf/*")
将删除运行 Python 脚本的计算机的硬盘驱动器。
关于python - 如何在Python中调用raw_input()正确显示中文字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20965391/