python - python 中字符集之间的转换

标签 python unicode character-encoding python-3.x

我需要输出一些字符串(到标准输出),因为 Windows 控制台在 cp437 中工作,如果字符串包含 cp437 之外的任何字符,则会引发异常。

我解决了这个问题

encoding=sys.stdout.encoding
pathstr = path.encode(encoding,errors="replace").decode(encoding)
print(pathstr)

其中path是我想要输出的str。我可以接受用“?”替换的字符

这看起来不太好,因为它会转换为字节数组并返回为 str。

是否有更好的方法来实现这一目标?

我对 python 还很陌生(可能需要一周),并且我正在使用 Win7 32 位和 cpython 3.3

最佳答案

This doesn't seem good because it converts to a byte array and back to a str.

如果要将原始字节写入流,请使用.buffer:

pathbytes= path.encode(encoding, errors= 'replace')
sys.stdout.buffer.write(pathbytes)

...哦,那一天issue 1602到了某事,我们就可以避免 Windows 命令提示符的 Unicode 恐怖......

关于python - python 中字符集之间的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16257893/

相关文章:

python - Doc2vec 超越初学者指导

python - 覆盖 CKAN 中的 url 验证器

c# - python代码转C#时,hmacsha编码出现问题

c# - 有关 sql server 存储印地文 mangal devnagari 字体的问题。当我尝试插入值时它显示方框

python - Windows 上带有 cp1251 和 utf-8 的 Unicode

html - <meta charset ="utf-8"> 声明自己文件的编码?

python - 格式化表 ascii python

java - 韩文未出现在Apache Netbeans中

php - 使用 gettext 和 smarty 获取特殊字符的时间

php - 相同数据集输出不同字符: phpmyadmin/own query