栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python-UnicodeEncodeError:“charmap”编解码器无法编码-字符映射到,打印函数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python-UnicodeEncodeError:“charmap”编解码器无法编码-字符映射到,打印函数

我看到了三种解决方案:

更改输出编码,因此它将始终输出UTF-8。请参阅例如在Python中管道输出stdout时设置正确的编码,但是我无法使这些示例正常工作。

以下示例代码使输出知道你的目标字符集。

# -*- coding: utf-8 -*-import sysprint sys.stdout.encodingprint u"Stöcker".enpre(sys.stdout.encoding, errors='replace')print u"Стоескер".enpre(sys.stdout.encoding, errors='replace')

本示例将我名字中所有不可打印的字符正确地替换为问号。

如果你myprint使用该机制创建自定义打印功能(例如称为),则可以使用该机制对输出进行正确编码,则只需在myprint必要时替换为print即可,而不会使整个代码看起来难看。

在软件开始时全局重置输出编码:

http://www.macfreek.nl/memory/Encoding_of_Python_stdout页面上有很好的摘要,说明如何更改输出编码。特别是“围绕Stdout的StreamWriter包装器”这一节很有趣。从本质上讲,它说要更改I / O编码功能,如下所示:

在Python 2中:

if sys.stdout.encoding != 'cp850':  sys.stdout = precs.getwriter('cp850')(sys.stdout, 'strict')if sys.stderr.encoding != 'cp850':  sys.stderr = precs.getwriter('cp850')(sys.stderr, 'strict')

在Python 3中:

if sys.stdout.encoding != 'cp850':  sys.stdout = precs.getwriter('cp850')(sys.stdout.buffer, 'strict')if sys.stderr.encoding != 'cp850':  sys.stderr = precs.getwriter('cp850')(sys.stderr.buffer, 'strict')

如果在CGI输出HTML中使用,则可以将’​​strict’替换为’xmlcharrefreplace’,以获取不可打印字符的HTML编码标签。

随意修改方法,设置不同的编码,.....请注意,它仍然无法输出未指定的数据。因此,任何数据,输入,文本都必须正确转换为unipre:

# -*- coding: utf-8 -*-import sysimport precssys.stdout = precs.getwriter("iso-8859-1")(sys.stdout, 'xmlcharrefreplace')print u"Stöcker"     # worksprint "Stöcker".depre("utf-8") # worksprint "Stöcker"      # fails


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/456396.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号