编码解码问题

在一次请求一个网页的过程中,遇到一个问题,代码如下:

这是解决了问题之后的代码

import urllib.requestheaders={'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'}request = urllib.request.Request("https://dress.pclady.com.cn/",headers=headers)response = urllib.request.urlopen(request)html = response.read().decode(encoding='gbk', errors='ignore')print (html)

如果将.decode(encoding=‘gbk’, errors=‘ignore’) 改为.decode(‘utf-8’) 就会报如下错误:

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

错误的意思是:UnicodeDecodeError:“utf-8”编解码器无法解码位置75中的字节0xb7:inv

经网上查询了解到这是因为遇到了非法字符——尤其是在某些用C/C++编写的程序中,全角空格往往有多种不同的实现方式,比如\xa3\xa0,或者\xa4\x57,这些字符,看起来都是全角空格,但它们并不是“合法”的全角空格(真正的全角空格是\xa1\xa1),因此在转码的过程中出现了异常。
这样的问题很让人头疼,因为只要字符串中出现了一个非法字符,整篇文章就都无法转码。

改为.decode(encoding=‘gbk’, errors=‘ignore’) 即可解决错误

下面解释一下decode(encoding=‘gbk’, errors=‘ignore’) 这个函数
decode() 方法:
以 encoding 指定的编码格式来解码字符串。默认编码规则是encoding=‘utf-8’
语法: bytes.decode(encoding=‘UTF-8’,errors=‘strict’)
参数:

  • bytes是由编码方法encoding()编码转换过后得到的字符串的字节表示值。

  • encoding – 解码时要使用的编码方案,如"UTF-8"。

  • errors – 设置不同错误的处理方案。默认为 ‘strict’,意为编码错误引起一个代码产生UnicodeError错误,代表遇到非法字符时抛出异常。
    其它的值有 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过 codecs.register_error() 注册的任何值。

如果设置为ignore,则会忽略非法字符;
如果设置为replace,则会用?取代非法字符;
如果设置为xmlcharrefreplace,则使用XML的字符引用。

str->bytes:encode编码

bytes->str:decode解码

如何查看网页编码格式

在网页按F12,打开开发者工具

在console控制台输入document.charset 然后回车,如图:

参照博客: https://www.jb51.net/article/16104.htm

编码解码问题.decode(encoding='gbk', errors='ignore')相关推荐

  1. Golang Base64编码解码

    Golang Base64编码解码 Golang内置支持Base64编码解码,Go的encoding/base64包遵照RFC 4648规范实现了base64编码解码功能,包括标准方式以及URL/文件 ...

  2. js base64 编码解码

    js base64 编码解码 encode decode,可以直接使用 function Base64() {// private property_keyStr = "ABCDEFGHIJ ...

  3. Python编码、解码的理解(GBK,UTF-8,Unicode)

    前端时间做文本处理的时候,出现了很多编码解码的问题,总是在python中不知道怎么处理,啥时候需要解码,啥时候需要编码,有点懵逼,索性自己钻研一下吧!(*•ω•) 声明:本文的撰写为作者记录自己学习所 ...

  4. 编码格式(UTF-8 与 ANSI)各种编码解码(encode、decode)

    Windows:默认为 ANSI,记事本程序另存为处,可以设置其他编码格式: Ubuntu:默认为 UTF-8 1. ANSI ANSI 编码表示英文字符时用一个字节,表示中文用两个或四个字节 -- ...

  5. 编程时的编码、编码解码、编码乱码问题(ASCII、GBK、Unicode、UTF-32、UTF-8)

    编程时的编码.编码乱码问题(ASCII.GBK.Unicode.UTF-32.UTF-8) 1.ASCII (American Standard Code for Information Interc ...

  6. Base64 Encode/Decode Class C++ SourceCode - Base64编码/解码 类 C++ 源码

    Base64 Encode/Decode Class C++ SourceCode - Base64编码/解码 类 C++ 源码 1.Base64.h // Base64.h: interface f ...

  7. js url解码gbk_decodeURI解码,由URIEncoder.encode(,GBK)编码的中文,问题解决

    一.js内置编码,解码函数的介绍: @.JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数: une ...

  8. python--字符/文本编码解码笔记

    字符/文本编码解码笔记 1.字符问题 编码和解码 2.字节概要 3.基本的编解码器 编码类型史 字符编码 ASCII码 GB2312以及其他编码 UNICODE标准编码 UTF-8编码 4.了解编解码 ...

  9. python3 转码的函数_python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...

最新文章

  1. 【原创】大道五目 Flash版 Demo
  2. Apollo进阶课程㉔丨Apollo 规划技术详解——Motion Planning Environment
  3. SpringCloud微服务(06):Config组件,实现配置统一管理
  4. MySQL字符集小结
  5. 批量创建用户邮箱并修改别名
  6. java基础------多线程(转)
  7. java归并算法实例_Java编程中实现归并排序算法的实例教程
  8. bootstrap table分页limit计算pageIndex和pageSize
  9. 程序员常用的画图软件推荐
  10. 蓝牙耳机出口欧盟要做什么CE的哪些指令?
  11. android 盒子 串流,Steam流式盒子(Steam串流手机App)1.1.0 安卓正式版
  12. 下载VS(visualstudio)2019官方网站详解
  13. idea生成函数 的注释快捷键_动态演示解密:Excel随机数生成函数配合F9快捷键即可实现...
  14. photoshop图片显示为索引,解决办法
  15. 【LR/PS插件】胶片颗粒调色光晕视觉效果工具 Optics 2022.0.1 Win
  16. 数据结构点餐管理系统java,C语言实现餐饮点餐管理系统
  17. hive 正则表达式 过滤字符串里的中文
  18. 奇点临近:互联网经济的供给侧革命和全球货币政策的新格林斯潘之谜
  19. 自由软件之父 Stallman:「我一生都为使用者的自由而奋斗」
  20. windows子系统ubuntu远程桌面连接

热门文章

  1. Proxifier设置代理上网详细操作
  2. ajax实现注册用户名时动态显示用户名是否已经被注册(1、ajax可以实现我们常见的注册用户名动态判断)(2、jquery里面的ajax也是类似我们这样封装了的函数)...
  3. 制作arch linux安装u盘,制作 Arch Linux 内存系统启动盘
  4. Jmeter察看结果树的响应数据中的中文显示乱码问题处理
  5. php 代码梅花,wordpress梅花飘落效果制作
  6. python可以做哪些小工具_python的简单实用小工具
  7. python 手机号码识别,python 通过手机号识别出对应的微信性别(实例代码)
  8. python清华源的设置
  9. AD中怎样修改原理图图纸大小
  10. 汽车行业部件IPX9K高温高压喷水试验测试