在Python控制台中显示中文字符

3

我知道有相关的问题,但我的情况比较特殊,因为我在Docker容器中运行代码,而且我无法使其他解决方案起作用。

我使用Python 2.7和翻译模块将英文文本翻译成中文(以及其他非拉丁语言):

from translate import Translator
text = 'Hello'
translator= Translator(to_lang='zh')
translated_text=translator.translate(text)
print(translated_text.encode('utf-8'))

这个最后的命令无法在控制台显示中文文本,只会显示问号。从文档来看,translate()应该输出一个Unicode字符串。

我是在Ubuntu 16.04 Docker容器和Windows主机上运行的。所以问题可能出在Ubuntu或Windows没有正确配置以显示这些字符,但我不知道如何检查。任何帮助将不胜感激。


没有任何编码 - py_dude
@py_dude 但是你的链接中明确指出:“结果是翻译后的Unicode字符串。”无论如何,如果我直接打印translated_text,我会得到UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)。 - Sulli
在Windows端,默认的字符编码是什么?错误信息(range(128))表明它是一个7位编码,也许是CP-1252?如果这是问题所在,请参阅“在Windows 7中设置UTF8为默认字符编码”。 (https://superuser.com/questions/239810/setting-utf8-as-default-character-encoding-in-windows-7) - gboffi
可能的问题在于您的Ubuntu本地设置,但在Ubuntu和Mac上运行良好。 - matesio
1个回答

2

我可以使用以下方式在 Windows 控制台上显示中文字符:

from translate import Translator
text = 'Hello'
translator= Translator(to_lang='zh')
translated_text=translator.translate(text)
print(translated_text) # read notes
# 您好

注意事项:
在运行脚本之前,请确保您将Windows控制台的默认代码页设置为“936(ANSI / OEM-简体中文GBK)”。 您可以通过在控制台上键入chcp 936来完成此操作,例如:

chcp 936
python myscript.py
您好

来源:https://www.walkernews.net/2013/05/19/how-to-get-windows-command-prompt-displays-chinese-characters/

本文介绍如何在Windows命令提示符窗口中显示中文字符。首先需要确保操作系统支持中文语言,然后运行以下命令:chcp 65001。此命令将控制台代码页更改为UTF-8编码,以支持Unicode字符集,包括中文字符。如果您想使更改永久生效,请将此命令添加到注册表编辑器中的启动项中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接