编码解码问题

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

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

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. Mac下php 5升级到php 7的步骤详解
  2. mysql通配符_mysql通配符进行模糊查询
  3. 计算机应用基础实训任务书,《计算机应用基础》任务书
  4. 云炬60s看世界20211117
  5. AFIO时钟何时开启
  6. 动态数组的定义和声明(c++)
  7. redis 源码 ziplist.c 压缩list的实现
  8. 解决LSP问题导致无法上网
  9. Android之设置横屏竖屏
  10. 236 Lowest Common Ancestor of a Binary Tree
  11. Java打包生成exe(使用exe4j和inno setup)
  12. python编程例子-python网络编程实例简析
  13. Lucene4:创建一个简单查询
  14. 性能分析之排队论应用
  15. C语言经典笔试题解析,原来微软笔试题也有简单的,C语言学习专题
  16. python爬去新浪微博_Python爬取新浪微博热搜榜
  17. 【详细】华为云免费SSL证书申请步骤
  18. php cms 301,www域名301
  19. IT外企那点儿事(12):也说跳槽
  20. Android SDKManger 更新设置

热门文章

  1. 电脑操作系统 GUI 38年进化史
  2. python读二进制格点雷达基数据_radar: 基于python pycinrad 以及多种类库 编写基于java 的雷达基数据统一格式读取...
  3. 迅为i.MX6ULL 开发板开机进度条修改文档
  4. 网络精准营销方式包括哪些
  5. 螺纹检测案例-螺距测量-大径小径检测-螺牙检测
  6. 上市一周年成绩单出炉,金融壹账通2020年度营收增长42%
  7. 从论文中导出参考文献至EndNote
  8. TypeScript 发布 4.9 beta
  9. jdk8+Windows10安装及环境变量配置
  10. Python数据可视化学习(初学中...)