首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python3.0,如何使print()输出Unicode字符串?

Python3.0,如何使print()输出Unicode字符串?
EN

Stack Overflow用户
提问于 2018-01-17 06:22:44
回答 2查看 0关注 0票数 0

我在WinXP5.1.2600中工作,编写了一个涉及中文拼音的Python应用程序,这让我陷入了无尽的Unicode问题。切换到Python3.0已经解决了其中的许多问题。但是,控制台输出的print()函数并不能识别Unicode。

代码语言:javascript
复制
print('sys.stdout encoding is "' + sys.stdout.encoding + '"')
str1 = 'lüelā'
print(str1)

输出是(为了可读性将尖括号改为方括号):

代码语言:javascript
复制
    sys.stdout encoding is "cp1252"
    Traceback (most recent call last):
      File "TestPrintEncoding.py", line 22, in [module]
        print(str1)
      File "C:\Python30\lib\io.py", line 1491, in write
        b = encoder.encode(s)
      File "C:\Python30\lib\encodings\cp1252.py", line 19, in encode
        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
    UnicodeEncodeError: 'charmap' codec can't encode character '\u0101' 
    in position 4: character maps to [undefined]

请注意,ü=\xfc=252没有问题,因为它位于ASCII的上层。但是\u 0101是超过8位的。

有人知道如何将sys.stdout的编码更改为“utf-8”吗?请记住,Python 3.0不再使用codecs模块,如果我理解文档正确的话。

抱歉,我给你的节目没有序言。在给出3行之前,它的开头如下:

代码语言:javascript
复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys

不幸的是,由“code:”行指定的编码是源代码,而不是控制台输出。但是谢谢你的想法!

EN

回答 2

Stack Overflow用户

发布于 2018-01-17 14:26:23

Windows命令提示符(cmd.exe)不能显示您正在使用的Unicode字符,即使Python在内部以正确的方式处理它。您需要使用空闲、Cygwin或其他可以正确显示Unicode的程序。可以参考下面的链接:

http://www.nabble.com/unable-to-print-Unicode-characters-in-Python-3-td21670662.html

票数 0
EN

Stack Overflow用户

发布于 2018-01-17 15:35:19

您可能想尝试将环境变量“Pytoniouncoding”更改为“utf”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档