解决编码问题:UnicodeDecodeError: 'utf-8' codec can't decod

目录
  • UnicodeDecodeError: 'utf-8' codec can't decod
  • python的编码声明

UnicodeDecodeError: 'utf-8' codec can't decod

有一次报错如下:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 0: invalid start byte

编码问题:

f = open(txtPath,'r',encoding='utf-8')

改为:

f = open(txtPath,'r',encoding='gbk')即可
print(f.read())

又有一次读取CSV文件时报错:

import pandas as pd
content = pd.read_csv('news.csv',encoding='utf-8')
print(content.head())

报错如下:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xba in position 0: invalid start byte

这里我将编码问题 utf-8 改为 gbk,还是报错。。。。报错如下:

UnicodeDecodeError: 'gbk' codec can't decode byte 0xa2 in position 93: illegal multibyte sequence

最后当我把程序改为:

import pandas as pd
content = pd.read_csv('news.csv',encoding='gb18030')
print(content.head())

即读取成功:

这类问题都是文件编码问题,至于文件到底是什么类型的编码,谁都不知道,只能用最常用的编码格式一个去试一下。这里我将文件编码格式改为gb18030,是偶尔看到有这种格式试出来的。。。。不知道现在有没有软件能够检测文件是什么类型就好了。。

python的编码声明

通常,在python 文件,尤其是包含中文的python文件中,需要说明你的Python源程序文件使用的编码;如果未声明,程序默认使用ascii码来写,此时,书写中文的话python解释器一般会报错。

常见的编码声明:

# coding=utf-8
# coding:utf-8
# -*-coding=utf-8-*-
# -*-coding:utf-8-*-

注意:

①coding后面使用:或=都可以。

②:或=与coding之间不能有空格,而:或=与编码之间有没有空格均可。

③编码声明一般放在python文件开头(第一行或第二行)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python运行报错UnicodeDecodeError的解决方法

    Python2.7在Windows上有一个bug,运行报错: UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 33: ordinal not in range(128) 解决方案如下: 编辑Python27\Lib\mimetypes.py文件,全选,替换为以下patch后的正确脚本,或者直接依据此patch修改: """Guess the MIME type of a file. Th

  • python解决汉字编码问题:Unicode Decode Error

    前言 最近由于项目需要,需要读取一个含有中文的txt文档,完了还要保存文件.文档之前是由base64编码,导致所有汉字读取显示乱码.项目组把base64废弃之后,先后出现两个错误: ascii codec can't encode characters in position ordinal not in range 128 UnicodeDecodeError: 'utf8' codec can't decode byte 0x. 如果对于ascii.unicode和utf-8还不了解的小伙伴

  • 解决pyshp UnicodeDecodeError的问题

    用最新版本(2.1.0)的pyshp解析shp文件的records时: records = sf.records() 如果records里面含有中文字段,那么就会报错: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcc in position 0: invalid continuation byte 这个是编解码的问题,解决方法是把版本降到1.2.12就可以了,虽然records里面的中文字段还需要再次解码,但结果是很清晰的. 没有

  • 解决编码问题:UnicodeDecodeError: 'utf-8' codec can't decod

    目录 UnicodeDecodeError: 'utf-8' codec can't decod python的编码声明 UnicodeDecodeError: 'utf-8' codec can't decod 有一次报错如下: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 0: invalid start byte 编码问题: f = open(txtPath,'r',encoding='utf-8'

  • Python UnicodedecodeError编码问题解决方法汇总

    目录 1.情景一 2.情景二 3.情景三 4. chardet模块detect()函数 今天真的被编码问题一直困扰着,午休都没进行.也真的见识到了各种编码.例如:gbk,unicode.utf-8.ansi.gb2312等.如果脚本程序中编码与文件编码不一致,就会报出UnicodedecodeError的错误. 1.情景一 读文件时常需要将内容转为utf8,文字可正常显示,但是如果原文件内容编码格式不是utf8就会报错UnicodedecodeError.如下: 问题: try: fileObj

  • Eclipse中引入com.sun.image.codec.jpeg包报错的完美解决办法

    在Eclipse中开发JAVAT程序处理图片时,需要引入两个包: import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; 但有时引入这个两个包时会报出错误: Access restriction: The type JPEGImageEncoder is not accessible due to restriction on required library C:/

  • thinkphp3查询mssql数据库乱码解决方法分享

    thinkphp查询mssql数据库出现乱码的原因是ThinkPHP默认为UTF-8,而msmsql数据库是简体中文版,存储的是GB2312编码 解决方法: 1:在ThinkPHP\Lib\Core 打开Db.class.php,在其最后面加上2:在Db.class.php找到function select(),在$result = $this->query($sql);后面加一条 $result=iconv2utf8($result),就OK了 复制代码 代码如下: public functi

  • Java字符编码简介_动力节点Java学院整理

    1. 概述 本文主要包括以下几个方面:编码基本知识,Java,系统软件,url,工具软件等. 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0 cec4",Unicode编码为"4e2d 6587",UTF编码就是"e4b8ad e69687".注意,这两个字没有iso8859-1编码,但可以用iso8859-1编码来"表示". 2. 编码基本知识 最早的编码是iso88

  • Java中关于字符串的编码方式

    目录 字符串的编码方式 idea中默认的字符串编码方式为utf-8 utf-8和GBK中字符串所占用的字节数 设置字符串编码.转码 UTF-8 UTF-16 UTF-32 java中编码 解决编码乱码 字符串的编码方式 UTF-8是Unicode的一种实现方式,也就是它的字节结构有特殊要求,所以我们说一个汉字的范围是0X4E00到0x9FA5,是指unicode值,至于放在utf-8的编码里去就是由三个字节来组织,所以可以看出unicode是给出一个字符的范围,定义了这个字是码值是多少,至于具体

  • php使用mb_check_encoding检查字符串在指定的编码里是否有效

    mb_check_encoding - 检查字符串在指定的编码里是否有效PHP 版本要求: (PHP 4 >= 4.4.3, PHP 5 >= 5.1.3)说明:bool mb_check_encoding ([ string $var = NULL [, string $encoding = mb_internal_encoding() ]] )检查指定的字节流在指定的编码里是否有效.它能有效避免所谓的"无效编码攻击(Invalid Encoding Attack)".参

  • php处理json时中文问题的解决方法

    操作的代码如下: 复制代码 代码如下: <?php $usr = new User(); echo json_encode($usr); ?> 很简单的代码,无中文情况一切正常,输出如下: {"PlatformID":"123213","UserID":"1023"} 一旦有中文的时候会出现两种情况. 第一种情况是对象本身的某个值为中文的属性是utf-8编码,则会有如下输出: {"PlatformID&q

  • PHP学习笔记之字符串编码的转换和判断

    复制代码 代码如下: iconv('GBK', 'UTF-8//IGNORE', '我们'); // 将字符串由 GBK 编码转换为 UTF-8 编码 但 iconv 只能解决编码预先知道的情况,如果字符串编码未知,则需要先探测其编码,这时可能会用到 mb_string 扩展库: 复制代码 代码如下: mb_detect_encoding('我们'); 可是 mb_detect_encoding 存在一个硬伤,经常出现判断不准确的情况.或许这样就可以解决: 复制代码 代码如下: // 使用 ic

  • Android编程向服务器发送请求时出现中文乱码问题的解决方法

    本文实例讲述了Android编程向服务器发送请求时出现中文乱码问题的解决方法.分享给大家供大家参考,具体如下: 我们在andorid项目中通过get方式向服务器发送请求,其中url参数带有中文,将会产生乱码,乱码产生的原因有两种: 1. 在提交参数时,没有对中文参数进行URL编码 2. Tomcat服务器默认采用的是IOS8859-1编码(不支持中文)得到参数值 解决: 1. 进入android项目,在其中要提交参数的时候,对参数的值进行编码: 复制代码 代码如下: URLEncoder.enc

随机推荐