首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Unicode错误Python3日历模块

Unicode错误Python3日历模块
EN

Stack Overflow用户
提问于 2015-12-23 08:53:51
回答 2查看 134关注 0票数 1

我正在尝试从python calendar模块打印一个简单的日历:

代码语言:javascript
运行
复制
import calendar

c = calendar.LocaleTextCalendar(0, 'Russian')
s = c.formatmonth(2016, 5)
print(s)

在linux上,它工作得很好,但是在Windows上我得到了一个错误:UnicodeEncodeError: 'charmap' codec can't encode characters in position 4-10: character maps to <undefined>

为了避免这个错误,我所能做的就是print(s.encode('ascii', 'replace').decode('ascii')) (没有区域设置文本值),所以我非常喜欢普通的很好的解决方案。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-23 14:43:09

我解决了以下问题:

代码语言:javascript
运行
复制
import platform

if platform.system() == 'Windows':
    import locale
    locale.setlocale(locale.LC_ALL, "Russian")

...
print(s) # Works!

另一个选项是打印内部的编码/解码:

代码语言:javascript
运行
复制
print(s.encode('cp1252').decode('cp1251'))

这两种情况也适用于文件输出。

票数 1
EN

Stack Overflow用户

发布于 2015-12-23 09:05:07

这是因为windows控制台编码不是Unicode。不幸的是,这并不是微不足道的事情,有几种方法可以解决这个问题。

您的控制台的编码是什么?你可以这样在Python中找到答案。

代码语言:javascript
运行
复制
import sys
sys.stdin.encoding

您可以尝试这样设置Unicode,只用于当前控制台:

代码语言:javascript
运行
复制
chcp 65001
python myScript.py

在您的脚本中,确保字符串被编码到UTF-8中。

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

https://stackoverflow.com/questions/34431840

复制
相关文章

相似问题

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