UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc9 in position 167

2024-08-21 01:32

本文主要是介绍UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc9 in position 167,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在用urllib.request库的时候一部小心就会碰到

    url = "http://money.163.com/special/pinglun/"data_byte = urllib.request.urlopen(url).read()data = data_byte.decode('UTF-8')print(data)

报错:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc9 in position 167: invalid continuation byte

这是由于byte字符组没解码好,要加另外一个参数
官方文档中也这么写到

bytearray.decode(encoding=”utf-8”, errors=”strict”)

    Return a string decoded from the given bytes. Default encoding is 'utf-8'. errors may be given to set a different error handling scheme. The default for errors is 'strict', meaning that encoding errors raise a UnicodeError. Other possible values are 'ignore', 'replace' and any other name registered via codecs.register_error(), see section Error Handlers. For a list of possible encodings, see section Standard Encodings.

意思就是字符数组解码成一个utf-8的字符串,可能被设置成不同的处理方案,默认是‘严格’的,有可能抛出UnicodeError,可以改成‘ignore’,’replace’就能解决

我把上面的data_byte.decode(‘UTF-8’)改成data_byte.decode(‘UTF-8’,‘ignore’)就解决了

这篇关于UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc9 in position 167的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1091735

相关文章

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

php中json_decode()和json_encode()

1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行编码 说明 mixed json_decode ( string $json [, bool $assoc ] ) 接受一个 JSON 格式的字符串并且把它转换为 PHP 变量 参数 json

在Unity环境中使用UTF-8编码

为什么要讨论这个问题         为了避免乱码和更好的跨平台         我刚开始开发时是使用VS开发,Unity自身默认使用UTF-8 without BOM格式,但是在Unity中创建一个脚本,使用VS打开,VS自身默认使用GB2312(它应该是对应了你电脑的window版本默认选取了国标编码,或者是因为一些其他的原因)读取脚本,默认是看不到在VS中的编码格式,下面我介绍一种简单快

css-transform对position:fixed影响

在betterScroll尝试使用position:fixed固定首列,然而并不能实现固定。因为 bscroll / iscroll 是基于 transform 属性实现滚动的, 所以 iscroll 会通过实时修改元素的 transform 属性以达到滚动的效果。父元素如果存在 transform 属性,子元素的 position: fixed 属性无效。betterScroll有个 useTr

【python 编码问题】UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not

插入oracle 数据发生 错误:UnicodeEncodeError: 'ascii' codec can't encode characters in position 131-136: ordinal not in range(128) 先说解决办法: python2.7版本,在开头加入下面语句 import sysreload(sys)sys.setdefaultencoding

1字节的UTF-8序列的字节1无效

使用DOMReader解析XML文档时候报错”1字节的UTF-8序列的字节1无效”,我这里的解决方法。 1.手动将< ? xml version=”1.0” encoding=”UTF-8”?>中的UTF-8更改成UTF8,这样就可以了。 2.使用文本编译器把xml文档改成以UTF8无BOM编码格式就可以了。

case when 与 decode 用法

case when 在不同条件需要有不同返回值的情况下使用非常方便,可以在给变量赋值时使用,也可以在select查询语句中使用。 case搜索语句格式: case  when 条件1 then 返回值1  when 条件2 then 返回值2  ...  else 返回值N  end; case when使用示例代码: select empno,ename,job,cas

页面jsp编码utf-8,传递中文参数到java后台出现乱码

1、前台页面jsp的编码是contentType=”text/html; charset=utf-8” 后台编码是gdk,传递中文参数时出现乱码,后台接收到传递的参数时需要进行转换才能解决乱码问题。 new String(this.getParameter("teacherName").getBytes("iso-8859-1"),"utf-8") 2、google浏览器显示正常,但是IE浏

Android 打开 GBK项目如何设置成UTF-8

1.标题 今天打开一个eclipse老项目,编码格式为GBK,Android studio导入项目报错,本人想到一个方案就是批量修改文件格式从 GBK到 UTF-8,这样可以一键解决问题 2.开发脚本 使用前请备份代码   使用前请备份代码   使用前请备份代码 脚本代码如下,保存到文件下为 shell.ps1 # 获取当前脚本的所在目录$folderPath = Get-Loca