博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3—UnicodeEncodeError 'ascii' codec can't encode characters in position 0-1
阅读量:4211 次
发布时间:2019-05-26

本文共 718 字,大约阅读时间需要 2 分钟。

问题描述

使用python3的时候,报错信息
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-1: ordinal not in range(128)

网上解释

网上给出的解释:错误的使用decode和encode方法会出现这种异常。例如使用decode方法将Unicode字符串转化的时候:

s = u'中文's.decode('utf-8')print s

但是将这个例子放到python3环境中,会报错

AttributeError: ‘str’ object has no attribute ‘decode’
熟悉python历史的朋友会知道,为了解决编码问题,在python3中,所有的字符串都是使用Unicode编码,统一使用str类型来保存,而str类型没有decode方法,所以网上给出的方向并不适合我的问题。

输出

既然字符编码、代码都没有错,那么问题肯定出在print上面。这时我开始关注错误信息中的ascii。因为在一般python3环境中,输出时会将Unicode转化为utf-8。为了解开这个疑惑,查看了输出编码

>>>import sys>>>sys.stdout.encoding'ANSI_X3.4-1968'

竟然是ANSI_X3.4-1968,所以任何中文都会报错。哈哈,终于定位问题啦。

解决方案

定位问题后,解决办法就很简单啦

使用

运行python的时候加上PYTHONIOENCODING=utf-8,即

PYTHONIOENCODING=utf-8 python your_script.py

转载地址:http://xggli.baihongyu.com/

你可能感兴趣的文章
UNIX高级环境编程-信号相关函数笔记
查看>>
unix编程专题-信号机制使用实例
查看>>
UNIX网络编程卷1:套接字联网-第5章:TCP客户/服务器程序示例
查看>>
UNIX编程专题-wait和waitpid详解
查看>>
UNIX编程专题-wait和waitpid详解2
查看>>
UNIX编程专题-服务器进程终止/服务器主机崩溃/服务器主机崩溃后重启/服务器主机关机
查看>>
UNIX编程专题-TCP连接探测详解
查看>>
UNIX编程专题-描述符集介绍和相关操作
查看>>
Linux IO模式及 select、poll、epoll详解
查看>>
UNIX编程专题-I/O复用:select、pselect、poll和epoll解析
查看>>
LINUX编程专题-I/O复用:epoll解析
查看>>
Linux源码解析-poll机制
查看>>
UNIX网络编程卷1:套接字联网-第7章:套接字选项
查看>>
UNIX网络编程卷1:套接字联网-第16章:非阻塞式I/O
查看>>
Linux源码解析-进程-进程
查看>>
Linux源码解析-进程-进程状态
查看>>
Linux源码解析-内核栈与thread_info结构详解
查看>>
Linux源码解析-内存描述符(mm_struct)
查看>>
进程的存储空间布局
查看>>
c函数调用过程原理及函数栈帧分析
查看>>