当前位置:  开发笔记 > 编程语言 > 正文

python 3.0,如何使print()输出unicode?

如何解决《python3.0,如何使print()输出unicode?》经验,为你挑选了2个好方法。

我正在使用WinXP 5.1.2600,编写一个涉及中文拼音的Python应用程序,这让我遇到了无数的Unicode问题.切换到Python 3.0已经解决了许多问题.但是由于一些奇怪的原因,控制台输出的print()函数不支持Unicode.这是一个很小的计划.

print('sys.stdout encoding is "' + sys.stdout.encoding + '"')
str1 = 'lüel?'
print(str1)

输出为(为了便于阅读,将尖括号更改为方括号):

    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.但是ā=\u0101超过了8位.

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


道歉,我给你的程序没有序言.在给出3行之前,它开始如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys

不幸的是,"coding:"行指定的编码是源代码的编码,而不是控制台输出的编码.但是谢谢你的想法!



1> Brandon..:

Windows命令提示符(cmd.exe)无法显示您正在使用的Unicode字符,即使Python在内部以正确的方式处理它.您需要使用IDLE,Cygwin或其他可以正确显示Unicode的程序.

有关完整说明,请参阅此主题:http: //www.nabble.com/unable-to-print-Unicode-characters-in-Python-3-td21670662.html


如果您使用可以显示所需unicode字符的字体,并且您将代码页更改为utf-8(您可以使用:`CHCP 65001`),cmd.exe可以显示unicode字符

2> daveagp..:

您可能想尝试将环境变量"PYTHONIOENCODING"更改为"utf_8".我已经在这个问题上写了一篇关于我的考验的页面.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有