Python将结果打印为';7\xe6\x9c\x8810\xe6\x97\xa5';,但我想要';7月;10日';

Python将结果打印为';7\xe6\x9c\x8810\xe6\x97\xa5';,但我想要';7月;10日';,python,unicode,printing,Python,Unicode,Printing,我获取了一个包含日语的网页,但是当我将其打印到控制台时,我没有得到7的输出月10日。而是打印:7\xe6\x9c\x8810\xe6\x97\xa5 我该怎么办?您得到的输出是正确的。这是日文字符串的UTF-8表示形式。问题是控制台本身不理解UTF-8。如果您在文件中写入该字符串,并使用理解UTF-8的编辑器打开它,您将看到预期的内容。您还可以尝试将控制台的编码更改为UTF-8 编辑:您还可以尝试以下内容: print '7\xe6\x9c\x8810\xe6\x97\xa5'.decode('

我获取了一个包含日语的网页,但是当我将其打印到控制台时,我没有得到
7的输出月10日。而是打印:
7\xe6\x9c\x8810\xe6\x97\xa5


我该怎么办?

您得到的输出是正确的。这是日文字符串的UTF-8表示形式。问题是控制台本身不理解UTF-8。如果您在文件中写入该字符串,并使用理解UTF-8的编辑器打开它,您将看到预期的内容。您还可以尝试将控制台的编码更改为UTF-8

编辑:您还可以尝试以下内容:

print '7\xe6\x9c\x8810\xe6\x97\xa5'.decode('utf-8')
但这是否有效取决于控制台编码是否支持日语字符。例如,如果控制台的编码是“ISO拉丁-1”,那么它将无法工作


我建议您阅读:

您是否使用Python 3?如果是这样,您可能正在打印字节对象。根据我的经验,至少在Windows上,如果您试图打印不可映射的字符,Python会抛出错误。我猜您的控制台无法打印UTF-8。。。(我们谈论的是什么类型的控制台)不。配置为使用8位编码的控制台不会将7位ASCII以上的八位字节转义为十六进制数字。谢谢。我使用pycharm的ide,当我打印字符串(打印a[1])时,它可以显示日语,当打印字典(打印a)时,它不会显示日语。@Tadeusz控制台可能使用UTF-16,在这种情况下,字符串无效。在Python中,当您获取网页时,Python不会自动为您解码文本,就像其他情况一样。我所有的网页抓取都是这样的:
try:page=request.urlopen(req.read().decode('utf-8');除了error.HTTPError作为e:_print('HTTPError:',e)
(请原谅缺少格式):
注意,urlopen返回一个bytes对象。这是因为urlopen无法自动确定从http服务器接收的字节流的编码。一般来说,一旦程序确定或猜测了适当的编码,它就会将返回的bytes对象解码为字符串。
由于python.org网站使用其meta标记中指定的utf-8编码,我们将使用相同的编码来解码bytes对象:>>>f=urllib.request.urlopen('http://www.python.org/“)>>>打印(f.read(100).decode('utf-8'))