Igo*_*tis 1 python unicode utf-8 python-3.x
为什么 Python\xe3在以下输出中添加:
>>> b'Transa\xc3\xa7\xc3\xa3o'.decode('utf-8')
'Transaç\xe3o'
Run Code Online (Sandbox Code Playgroud)
预期值为:
'Transação'
Run Code Online (Sandbox Code Playgroud)
关于我的环境的更多信息:
>>> import sys
>>> print (sys.version)
3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)]
>>> sys.stdout.encoding
'cp437'
Run Code Online (Sandbox Code Playgroud)
这是在控制台 2 + Powershell 下。
您需要使用支持您要打印的所有字符的控制台或终端。
在交互式控制台中打印时,字符被编码为控制台的正确编解码器,任何不支持的字符都使用backslashreplace错误处理程序来保持输出可读而不是抛出异常。这是默认sys.displayhook()功能的一个特性:
如果
repr(value)无法sys.stdout.encoding使用sys.stdout.errors错误处理程序编码(可能是'strict'),请sys.stdout.encoding使用'backslashreplace'错误处理程序将其编码。
您的控制台可以处理ç但不能处理ã. 有几种编解码器包含第一个字符但不包含最后一个字符;您使用的是IBM 代码页 437,但它绝不是唯一的。
如果您在标准 Windows 控制台 ( cmd.exe)中运行 Python,请注意 Python、Unicode 和该控制台不能很好地混合。你可以安装这个win-unicode-console包,让 Python 3 使用 Windows API 来更好地输出 Unicode 文本;您需要确保您的字体能够仍然显示您的 Unicode 文本。
我不确定该软件包是否与其他 Windows 外壳兼容;你的旅费可能会改变。