解决python中遇到的乱码问题

1. 解决中文乱码的一种可行方法

 1 # -*- coding:utf-8 -*-
 2 from __future__ import unicode_literals
 3 
 4 import chardet
 5 
 6 
 7 def smart_decoder(raw_content, default_encoding_list=("utf-8", "gb18030")):
 8     """
 9     将字符串解码成unicode
10     :type default_encoding_list: list of str
11     :rtype: unicode
12     :type raw_content: str|unicode
13     """
14     if isinstance(raw_content, unicode):
15         return raw_content
16 
17     encoding = chardet.detect(raw_content).get("encoding", "utf-8")
18 
19     try:
20         return raw_content.decode(encoding)
21     except UnicodeEncodeError as e:
22         for encoding in default_encoding_list:
23             try:
24                 return raw_content.decode(encoding)
25             except UnicodeEncodeError as e:
26                 pass
27         raise e
28 
29 
30 if __name__ == '__main__':
31     import requests
32 
33     a = requests.get("https://www.baidu.com").content
34     smart_decoder(a)

 

2. requests响应结果乱码

使用requests请求网址,获取响应response, 通过response.text得到的网页内容,有时候会出现乱码的情况。

原因:

  分析源代码发现,调用respose.text 其实就是对 response.content执行解码操作。编码通过chardet判断。

  乱码的关键是,chardet获取的编码可能不正确,但在执行response.content.decode时,程序会直接忽略编码异常,从而导致使用错误的编码解码。

 

解决思路:

  人工解码,处理编码错误

 

程序demo

1 def parse_response(response):
2     """
3     手工对requests的响应内容解码
4     :rtype: unicode
5     """
6     return smart_decoder(response.content)

 

源码见blog.

 

转载于:https://www.cnblogs.com/rkfeng/p/8017723.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

db 是个什么鬼?

最近在处理音频部分的内容,我们讨论一个音频的时候,会谈到声音的大小,就是「分贝」。Decibels,分贝这其中还涉及一个东西,就是放大器,声音经过放大器后,就会变成放大后的声音,这个是硬件放大&am…

原创--DataGrid自动分页例子,通过存储过程

通过存储过程来进行DataGrid自动分页,效率很高,可以进行百万和千万级的分页自己通过50万条记录测试,翻至任何页,需时小于一秒呵呵,仅供自己以后察看使用,所以代码写的不很规范所需的存储过程如下&#xff1…

常用正则表达式整理

一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字:^([1-9][…

我看完大连理工研究生的遗书之后

可能是因为年纪大的一丢丢,看到这类新闻会觉得难受,也可能是因为自己也是父亲了,想到这位同学父亲的情况更加受不了。然后回头想想自己这些年的经历,很多次也有过结束生命来解决问题的想法,每次到了最关键的时候&#…

nyoj91 阶乘之和

阶乘之和 时间限制:3000 ms | 内存限制:65535 KB难度:3描述给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为正数)的阶乘之和,如91!2!3!,…

面试官:如何写出让 CPU 跑得更快的代码?

前言代码都是由 CPU 跑起来的,我们代码写的好与坏就决定了 CPU 的执行效率,特别是在编写计算密集型的程序,更要注重 CPU 的执行效率,否则将会大大影响系统性能。CPU 内部嵌入了 CPU Cache(高速缓存)&#x…

bzoj 1058: [ZJOI2007]报表统计

Description 小Q的妈妈是一个出纳,经常需要做一些统计报表的工作。今天是妈妈的生日,小Q希望可以帮妈妈分担一些工 作,作为她的生日礼物之一。经过仔细观察,小Q发现统计一张报表实际上是维护一个可能为负数的整数数列,…

拼音输入法功能大比拼

使用电脑工作或在互联网大潮中冲浪的朋友都离不开输入法的使用,输入法种类繁多,让新接触电脑的朋友目不暇接,难以确定哪一款才是最适合的自己的输入法。 一、拼音走向主流 五笔逐渐衰落尽管目前市场上的输入法种类繁多,各种各样的…

循序渐进PYTHON3(十三) --8-- DJANGO之ADMIN

admin简单使用: 1.urls.py2.settings.py3.models.pyfrom django.db import modelsclassUserInfo(models.Model): uid models.AutoField(primary_keyTrue) user_name models.CharField(max_length30) email models.EmailField() memo models.TextField() img mo…

你见过出道即巅峰吗?

我不知道你们见过没有,反正我见过了。这个消息是我周五上班的时候收到的,这个是一位非电子专业转行嵌入式的同学,之前加我微信后,聊的不是很多,但是非常惊讶的是,刚刚毕业就拿到了一份非常不错的offer。但是…

Turing equation

问题 F: F.Turing equation 时间限制: 1 Sec 内存限制: 128 MB 提交: 19 解决: 1 [提交][状态][讨论版] 题目描述 The fight goes on,whether to store numbers starting with their most significant digit ortheir least significant digit. Sometimes this is alsocall…

vmware linux

从今天才开始linux的系统学习。在虚拟机里的linux-as-3不能上网, 记得好久以前就有这种问题。一直以为是在配置vmware时选的桥接方式有误。但是改后,也不能上网。怀疑根本就不能和路由器连通。首先确定物理连接,当在命令行下设好ip与netmask…

代码优化导致的奇葩问题

这个是今天在微信群里讨论的一个问题,先看图片点击查看大图代码流程大概是这个样子的点击查看大图查看 length 和 space1 的值,明显看到 length 小于 space1 的值,即使是这样小白都能搞懂流程的情况下,代码还是跑到else里面区执行…

实践:创建异步 HTTP 处理器

异步 HTTP 处理器允许你启动外部进程(比如一个调用远程服务器的方法),并且在无需等待外部进程被完成的情况之下继续处理器自身的处理。另外,在处理一个异步 HTTP 处理器的期间,ASP.NET 还会把通常用于外部进程的线程返…

nyoj187 快速查找素数

快速查找素数 时间限制&#xff1a;1000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;3描述现在给你一个正整数N&#xff0c;要你快速的找出在2.....N这些数里面所有的素数。 输入给出一个正整数数N(N<2000000)但N为0时结束程序。测试数据不超过100组输出将2~N范围…

深度:关于Linux内核最硬核的文章

来源 &#xff1a;头条号Linux学习教程&#xff0c;冰凌块儿01前言本文主要讲解什么是Linux内核&#xff0c;以及通过多张图片展示Linux内核的作用与功能&#xff0c;以便于读者能快速理解什么是Linux内核&#xff0c;能看懂Linux内核。拥有超过1300万行的代码&#xff0c;Linu…

springaop----springaop的使用(一)

与大多数技术一样&#xff0c; AOP 已经形成了自己的术语。描述切面的常用术语有通知&#xff08;advice&#xff09;、切点&#xff08;pointcut&#xff09;和连接点&#xff08;join point&#xff09;。从今天开始&#xff0c;我们对spring的切面编程做一个总结。她们都是你…

Microsoft .NET Pet Shop 4 架构与技术分析

1&#xff0e;项目概述与架构分析微软刚推出了基于ASP.NET 2.0下的Pet Shop 4, 该版本有了一个全新的用户界面。是研究ASP.NET 2.0的好范例啊&#xff0c;大家都知道&#xff0c;一直以来&#xff0c;在.NET和Java之间争论不休&#xff0c;到底使用哪个平台开发的企业级应用性能…

nyoj 14 会场安排问题

会场安排问题 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;4描述学校的小礼堂每天都会有许多活动&#xff0c;有时间这些活动的计划时间会发生冲突&#xff0c;需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活动&#xff0c;…

想领取开发套件,就来参加AIoT开发者大赛

你心目中的智慧校园长什么样&#xff1f; 传统校园上自习得排队等位&#xff0c;智慧校园手机一键查询空位&#xff0c;抢座占位有序便利&#xff1b; 传统校园灯光全靠手动调整&#xff0c;智慧校园灯光无感调控&#xff0c;营造全新智能光照环境&#xff1b;传统校园安全防护…