解决python3读写中文txt时UnicodeDecodeError : 'ascii' codec can't decode byte 0xc4 in position 5595: ordinal not in range(128) on line 0的问题

今天使用python3读写含有中文的txt时突然报了如下错误,系统是MAC OS,iDE是pycharm:

UnicodeDecodeError : ‘ascii‘ codec can‘t decode byte 0xc4 in position 5595: ordinal not in range(128) on line 0

按理说python3的默认编码是unicode,不应该出现这种错误,排查以后发现问题及解决方案如下:

import locale
print(locale.getpreferredencoding())>>> US-ASCII

也就是说系统默认的打开文本文档的编码变成了"US-ASCII",需要修改环境变量.

打开终端,输入locale,可以查看到自己本机的默认语言编码设置.在终端输入以下命令:

vim ~/.bash_profile
(如果你使用的是zsh,就open .zshrc)

然后在上面打开的文件里加入如下的环境变量:

LANG="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_CTYPE="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_ALL=C

然后在终端输入source ~/.bash_profile使修改生效,就可以成功读写中文txt了.

解决python3读写中文txt时UnicodeDecodeError : 'ascii' codec can't decode byte 0xc4 in position 5595: ordinal not in range(128) on line 0的问题

原文地址:https://www.cnblogs.com/limitlessun/p/10452924.html

时间: 2024-10-12 20:36:18

解决python3读写中文txt时UnicodeDecodeError : 'ascii' codec can't decode byte 0xc4 in position 5595: ordinal not in range(128) on line 0的问题的相关文章

[Python] 运行Flask, 报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 33: ordinal not in range(128)

运行时报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 33: ordinal not in range(128) Python2.7在Windows上一个bug!!! 解决方法: 参考官方patch: http://bugs.python.org/file19332/9291a.patch 如下代码:一,加入from itertools import count: 二,修改 def enum_type

解决Python字符串处理出现错误UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe4 in position 108: ordinal not in range(128)

今天做课程设计遇到了和数据库交互的地方,sqlite数据库设置成utf-8格式编码,插入到数据库中是正确的,但是当读取出来的时候就会出错,原因就是Python的str默认是ascii编码,搜集网上的资料,自己多次尝试,问题算是解决了,在代码中加上如下几句即可: import sys reload(sys) sys.setdefaultencoding('utf8')

python2 使用openpyxl 报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 20: ordinal not in range(128) 解决方法

# -*- coding: utf-8 -*- #! /usr/bin/env python # author: xiao~~ import openpyxl import sys reload(sys) sys.setdefaultencoding('utf-8') wb2=openpyxl.Workbook() wb2.save('test1.xlsx') print('新建成功') 附上剪短的代码 报错信息 Traceback (most recent call last): File "

Python UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 33: ordinal not in range

报错文件如上,下面修改的为该文件! 运行时报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 33: ordinal not in range(128) Python2.7在Windows上一个bug!!! 解决方法: 参考官方patch:http://bugs.python.org/file19332/9291a.patch 如下代码:一,加入from itertools import count: 二

解决UnicodeDecodeError: 'ascii' codec can't decode byte 0xcf in position 7: ordinal not in range(128)

在Windows下同时装了Python2和Python3,但是在使用命令给pip更新的时候,出现了以下错误: 解决办法:修改mimetypes.py文件,路径位于python的安装路径下的Lib\mimetypes.py文件.在import下添加如下几行,将编码设置为'gbk': 1 if sys.getdefaultencoding() != 'gbk': 2 reload(sys) 3 sys.setdefaultencoding('gbk') 成功解决,如图: 解决UnicodeDecod

【Python】【解决】UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 1: ordinal not in range(128)

我是转的 http://www.cnblogs.com/QuLory/p/3615584.html 刚用flask写了个小小的程序 程序能跑起来 可是就是访问网页的时候却报标题的错误 UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 1: ordinal not in range(128) Unicode的编码问题,读取文件时使用的编码默认是ascii而不是utf8,所以报错 在代码中加上几句即可: impo

运行python代码报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 91: ordinal not in range(128)的解决办法

1.通过搜集网上的资料,自己多次尝试,问题算是解决了,在代码中加上如下几句即可: import sys reload(sys) sys.setdefaultencoding('utf-8') 2.原因就是Python的str默认是ascii编码,和unicode编码冲突,混淆了python2 里边的 str 和 unicode 数据类型. 3.python3 区分了 unicode str 和 byte arrary,并且默认编码不再是 ascii. 运行python代码报错UnicodeDec

(转载)UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128)解决方法

python 安装成功后,默认的编码是ascii码,当程序中出现非ascii编码时,通常就会报这样的错. 处理方法就是将python的默认编码改为uft-8 在python安装文件中的Lib\site-packages里新建一个文件sitecustomize.py,里面代码如下: #encoding=utf8import sys reload(sys)sys.setdefaultencoding('utf8') 然后重启python即可生效 (转载)UnicodeDecodeError: 'as

解决UnicodeDecodeError: 'ascii' codec can't decode byte 0xba in position 31: ordinal not in range(128)

最近在使用pandas读取csv文本和用matplotlib绘图时出现以下错误提示: UnicodeDecodeError: 'ascii' codec can't decode byte 0xba in position 31: ordinal not in range(128) 经过搜寻网络上的资料,发现是ascii编码的问题,在自己程序代码前面加上以下几句,即可解决问题: import sysreload(sys)sys.setdefaultencoding('gb18030') 或者把上