Python3中遇到UnicodeEncodeError: 'ascii' codec can't encode characters in ordinal not in range(128)...

现象

打印任何一种包含有中文的对象,字典、列表、DataFrame、或字符串。比如:

print('中文')

控制台报错:

Traceback (most recent call last):File "printcn.py", line 1, in <module>print('\u4e2d\u6587')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

换另外一台机器可以正常显示 中文 。或者在PyCharm里执行也可以正常显示。只有在命令行控制台会报错。

我的环境是MacOS 10.13.3 中文,Anaconda3 5.0.1

Python 3.6.3 |Anaconda custom (64-bit)| (default, Oct  6 2017, 12:04:38) 
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

查找原因

如果是python 2.X的话需要在文件中加上 # -*- coding: utf-8 -*- 、以及 reload(sys) sys.setdefaultencoding("utf8") 。但是Python3应当默认就使用utf8编码,而且即使设置了这些也仍然不能正常打印。

有些人说用encode('utf-8')函数解决,但如果直接打印字典或DataFrame,总不能每个元素都encode一般吧。

最终查看了一下系统环境编码

>>> import sys
>>> sys.stdout.encoding
'US-ASCII'

而另一台能正常打印的机器是 en_US.UTF-8 

解决办法

(1)设置环境变量LANG

在linux或Mac上设置环境变量的方式一样,编辑~/.bash_profile文件('~'指的是用户登录后的默认目录),添加一行:

export LANG="en_US.UTF-8"

保存退出后重新打开命令行控制台

(2)使用PYTHONIOENCODING

在运行python命令前添加参数 PYTHONIOENCODING=utf-8 python printcn.py 

该参数的解释可查看官方文档:https://docs.python.org/3.6/using/cmdline.html#envvar-PYTHONIOENCODING

(3)重新定义标准输出

在代码中添加 sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach()) ,使代码变为:

import sys
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
print('中文')

 

转载于:https://www.cnblogs.com/qhlblog/p/8622109.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571034.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机文件传云服务器,手机云服务器传文件

手机云服务器传文件 内容精选换一换华为云帮助中心&#xff0c;为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档&#xff0c;帮助您快速上手使用华为云服务。如果私钥文件丢失了&#xff0c;可以为服务器替换新的密钥对&a…

Experimental-work1

软件测试第一次实验报告 3015207191 软件工程3班 林家乐 一、安装Junit&#xff0c;Hamcrest和Eclemma: 1.安装Junit 下载junit.jar&#xff0c;在项目里添加junit.jar并build一下即可。使用时&#xff0c;在项目内包含Junit4的库&#xff0c;其中包含junit.jar即…

c 开发服务器的性能,高性能网络编程(三):下一个10年,是时候考虑C10M并发问题了...

1、前言在本系列文章的上篇中我们回顾了过云的10年里&#xff0c;高性能网络编程领域著名的C10K问题及其成功的解决方案(上篇请见&#xff1a;《高性能网络编程(二)&#xff1a;上一个10年&#xff0c;著名的C10K并发连接问题》)。本文将讨论单机服务器实现C10M(即单机千万并发…

puppet(2)-资源介绍

puppet- 资源介绍&#xff1a; 类型、属性与状态同实现方式分离、仅指定目标状态 type {title:attribute > value,...}查看支持的资源类型&#xff1a; puppet describe -lpuppet describe -s TYPEpuppet describe TYPE定义资源的要点&#xff1a; 1、同一种类型中…

无盘服务器磁盘缓存,云更新无盘服务器磁盘缓存器

云更新无盘服务器磁盘缓存器 内容精选换一换Linux操作系统下&#xff0c;用户由于误操作卸载弹性云服务器上的Tools&#xff0c;会对非PVOPS系统的磁盘和网卡产生影响&#xff0c;导致系统无法发现数据盘。此时&#xff0c;用户可通过新建一个弹性云服务器&#xff0c;将原数据…

【Selenium】之谷歌、IE、火狐浏览器各个版本的浏览器驱动下载地址

地址&#xff1a;chromedriver官网下载地址&#xff1a; http://chromedriver.storage.googleapis.com/index.html&#xff08;失效了&#xff09; http://npm.taobao.org/mirrors/chromedriver/ IE浏览器驱动下载地址为&#xff1a;http://selenium-release.storage.googleapi…

云财经服务器维护,云财经服务器维护

云财经服务器维护 内容精选换一换云耀云服务器适用于对CPU、内存、硬盘空间和带宽无特殊要求&#xff0c;服务一般只需要部署在一台或少量的服务器上&#xff0c;一次投入成本少&#xff0c;后期维护成本低的场景。例如网站开发&#xff0c;Web应用。推荐使用云耀云服务器&…

字符编码和文件处理

字符编码 1、知识储备 cpu 内存 硬盘2 文本编辑器存原理 结论&#xff1a;在编写py的程序的时候&#xff0c;是没有语法的限制的&#xff0c;编辑的结果 跟编写一个普通的文本文件是没有任何区别&#xff0c; 只有把py程序交给python解释并且在运行的第三个阶段才有了 语言意义…

服务器lsass系统错误,Win7系统提示Lsass.exe系统错误的原因及解决

最近很多使用Win7系统用户反馈说开机提示lsass.exe系统错误&#xff0c;也不知道怎么回事?lsass.exe是什么进程&#xff0c;可能是病毒吗?带着这些疑问&#xff0c;下面小编告诉大家Win7系统提示Lsass.exe系统错误的原因及解决方法&#xff0c;希望本教程内容可以帮助到大家。…

鼠标移动或者鼠标点击div消失不见排查

点击事件&#xff0c;导致某div或者容器样式隐藏&#xff0c;如果不能直接发现click事件绑定&#xff0c;那么首先排查哪些方法在控制div的样式&#xff0c; 然后看一看哪些方法在调用修改样式的方法。 然后再排查什么在调用修改样式的方法的方法。顺藤摸瓜就知道问题所在了。 …

服务器proc文件,特殊文件系统proc

1&#xff0e; 对kern_mout()进行解析&#xff1a;(1) 调用函数get_unnamed_dev()为文件系统/proc文件系统分配一个设备号。(2) 调用函数read_super对应的函数proc_read_super()分配super_block,inode,dentry&#xff1b;(a)其中super_block是在函数read_super中新生成的;(b)in…

相对路径 web

http://www.jb51.net/web/21806.html 相对路径-以引用文件之网页所在位置为参考基础&#xff0c;而建立出的目录路径。因此&#xff0c;当保存于不同目录的网页引用同一个文件时&#xff0c;所使用的路径将不相同&#xff0c;故称之为相对。   绝对路径-以Web站点根目录为参考…

java基础英语---第一天

Path [ pɑ:θ ] 路径 class [klɑ:s] 类 classpath [klɑ:spɑ:θ ] 类路径 public [p ʌblik] 公共的,公用的 private [praivit] 私有的,私人的 static [st tik] 静的;静态的;静止的 void [vɔid] 空的,没有返回值的 main [mein] 主要的,重要的 System [sis…

洛谷.3919.[模板]可持久化数组(可持久化线段树/平衡树)

题目链接 //利用先前的根节点建树 想一下不难写。 #include <cstdio> #include <cctype> //#define gc() getchar() #define gc() (SSTT&&(TT(SSIN)fread(IN,1,MAXIN,stdin),SSTT)?EOF:*SS) const int N1e65,MAXIN2e6;int n,q,root[N],A[N]; char IN[MAXI…

anaconda下安装新包一直报错(‘parse() got an unexpected keyword argument 'transport_encoding'’)...

pip没有更新 解决方案&#xff1a;在prompt上输入 “ conda install pip ”转载于:https://www.cnblogs.com/Li---Chao/p/8641299.html

NFS服务端安装与配置

一、NFS介绍 NFS数据传输基于PRC协议&#xff0c;用于在网络上共享存储。 二、服务端配置NFS 1、服务端安装包 nfs-utils和rpcbind,使用yum安装nfs-utils时会一起安装rpcbind. yum install -y nfs-utils 2、创建配置文件 vim /etc/exports&#xff0c;写入以下内容&#xff1a…

HashMap的结构及源码分析

最近朋友说研究并发可以先从HashMap源码分析开始&#xff0c;所以就研究了下HashMap的结构和源码。 先从HashMap的结构开始。 我们都知道HashMap的用来存储key,value键值对数据的。既然是存储数据的&#xff0c;我们就得想一下数据存储的数据结构信息有哪些&#xff0c;我们所知…

【前端统计图】echarts实现单条折线图

五分钟上手&#xff1a;图片.png<!DOCTYPE html> <html><head><meta charset"utf-8"><title>五分钟上手之折线图</title><!-- 引入 echarts.js --><script src"js/echarts.min.js"></script><sc…

JAVA高并发的三种实现

提到锁&#xff0c;大家肯定想到的是sychronized关键字。是用它可以解决一切并发问题&#xff0c;但是&#xff0c;对于系统吞吐量要求更高的话&#xff0c;我们这提供几个小技巧。帮助大家减小锁颗粒度&#xff0c;提高并发能力。 初级技巧-乐观锁 乐观锁使用的场景是&#…

信数金服:决策模型的迭代

在《业务规则的生命周期管理》中&#xff0c;Carole-Ann指出了版本管理中的可追溯和回退功能是十分有效的。她还提到了发布版本的强大功能&#xff0c;基本上&#xff0c;它包括了给定时间点上的各条规则&#xff08;或任何类型的项目&#xff09;的版本&#xff0c;有效地提供…