uuid:全局唯一标识符
楔子
在请求数据的时候,我们得到的可能是一堆字节,这个时候我们会通过decode将其解码。但是解码的前提是我们需要知道其对应编码是什么,比如:utf-8、iso-8859-1、gbk等等。而python也提供了相应的模块,用于检测字节对应的编码。
chardet检测编码
from chardet import detect
# 直接传入字节即可
print(detect(b"are you ok?")) # {'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
"""
可以看到返回一个字典,包含三个key:
encoding: 使用的编码
confidence: 检测的准确度
language: 所使用的语言
"""
对于其它语言也是支持的
from chardet import detect
chinese_utf8 = "你为什么这么熟练啊".encode("utf-8")
chinese_gbk = "你为什么这么熟练啊".encode("gbk")
print(detect(chinese_utf8))
# {'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
print(detect(chinese_gbk))
# {'encoding': 'GB2312', 'confidence': 0.8888888888888888, 'language': 'Chinese'}
我们看到当使用utf-8编码的时候,虽然能检测出编码,但是无法推测出语言,因为任何语言的字符都可以正常使用utf-8进行编码。但是下面的gbk是可以推断出语言的,因为这是专门用于中文的编码,显示的gb2312是gbk的子集。
from chardet import detect
jp_utf8 = "なんでそんなに慣れてんだよ".encode("utf-8")
jp_euc = "なんでそんなに慣れてんだよ".encode("euc-jp")
print(detect(jp_utf8))
# {'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
print(detect(jp_euc))
# {'encoding': 'EUC-JP', 'confidence': 1.0, 'language': 'Japanese'}
对于日文也是一样的,chardet支持多种语言。
尤其是向其它地方请求数据的时候,给你返回了一堆你不知道是什么编码的字节,这个时候就可以使用chardet,最典型的就是requests。
我们在使用requests的get方法之后,会调用text得到请求的html。但是有时候调用text返回的内容里面包含乱码,这是因为requests在内部是先获取的字节,然后再进行解码、返回,而在解码的时候,使用了错误的编码造成的
而一般我们在调用text之前,我们会手动指定使用的编码
import requests
res = requests.get("http://www.baidu.com")
# res.content: 会拿到html对应的字节流
# res.encoding: 所使用的编码,根据网站决定
# res.text: 会先获取res.content,然后通过res.encoding进行解码得到res.txt
# 但是默认的res.encoding不一定能够正常解码,这个时候我们会手动指定res.encoding
# 将res.apparent_encoding赋值给res.encoding
res.encoding = res.apparent_encoding
# 然后调用res.text就能正常打印内容了
print(res.text)
那么我们就可以进入源码中看看这个res.apparent_encoding是什么
@property
def apparent_encoding(self):
"""The apparent encoding, provided by the chardet library."""
return chardet.detect(self.content)['encoding']
看到了吗?requests也是通过chardet检测对应的编码的,因为requests默认使用网站返回的编码,但是不一定靠谱。而通过这一步,会根据返回的字节手动推断出其使用的编码,然后赋值给res.encoding,这样再解码就没有问题了。
因此想知道返回的字节是什么编码的话,使用chardet是个很不错的选择。
uuid:全局唯一标识符的更多相关文章
- JS生成全局唯一标识符(GUID,UUID)的方法
全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) . GUID是一种由算法生成的二进制长度 ...
- Javascript 生成全局唯一标识符 (GUID,UUID)
全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) . GUID是一种由算法生成的二进制长度 ...
- GUID全局唯一标识符
全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中. ...
- GUID全局唯一标识符相关知识了解
全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中.在理想情 ...
- 全局唯一标识符(GUID)
全局唯一标识符,简称GUID(发音为/ˈɡuːɪd/或/ˈɡwɪd/),是一种由算法生成的唯一标识,通常表示成32个16进制数字(0-9,A-F)组成的字符串,如:{21EC2020-3AEA-106 ...
- GUID (全局唯一标识符)
全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中. ...
- Identifier:GUID (全局唯一标识符)
ylbtech-Miscellaneos-Identifier:GUID (全局唯一标识符) A,返回顶部 1, 全局唯一标识符(GUID,Globally Unique Identifier)是一种 ...
- 全局唯一标识符(GUID,Globally Unique Identifier)
全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中.在理想情况 ...
- [ActionScript 3.0] AS3 GUID(全局唯一标识符)
package com.controls { import flash.display.Sprite; import flash.system.Capabilities; public class G ...
- GUID(Globally Unique Identifier)全局唯一标识符
最近有大量数据存入数据库时,因为主键为一个nvarchar类型,起初想着用int 类型,每次打开表的时候,获取最后一行的ID,然后让其++. 但发现由于字段是char类型,数据库对其进行了排序.再次插 ...
随机推荐
- iOS实现TextField光标居中
// // MyTextField.m // DriverEpoch // // Created by 思 彭 on 2017/10/12. // Copyright © 2017年 http://h ...
- pch文件的添加
想说试了好久一直报错找不到文件,解决方法如下: 依次是:./项目名/文件夹名称/pch文件名
- Day04:循环结构(while、do-while、for)
Java 循环结构 - while ,do...while,for 反复执行一段相同或相似代码的格式. 顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构. Java ...
- xshell和Xftp连接虚拟机(转载)
首先连接虚拟机之前,先配置自己的IP地址,见博客https://www.cnblogs.com/xuzhaoyang/p/11264573.html xshell和Xftp下载请到官网http://w ...
- tf.contrib.layers.fully_connected参数笔记
tf.contrib.layers.fully_connected 添加完全连接的图层. tf.contrib.layers.fully_connected( inputs, num_ou ...
- WIN10家庭版添加"本地安全策略"
新建文本文件 输入一下命令 @echo off pushd "%~dp0" dir /b C:\Windows\servicing\Packages\Microsoft-Windo ...
- 【VS开发】VC下加载JPG/GIF/PNG图片的两种方法
1.用API OleLoadPicture来加载JPG.GIF格式的图片(注:不支持PNG格式,另外GIF只能加载第一帧,且不支持透明) OleLoadPicture 函数实际上创建了一个IPictu ...
- [AT2062] ~K Perm Counting
AT2602 , Luogu 求对于 \(n\) 个数的排列 , 有多少种方案满足对于所有的 \(i\) , \(|P_i - i| != K\) , 答案对 \(924844033\) 取模 . \ ...
- Ajax的使用及后台如何传参
Ajax的使用(此处为表单序列化方式) $.ajax({ type: 'post', data: $('#newPriorityForm').serialize(), dataType: 'json' ...
- (八)Spring 事务管理
目录 文章目录 @[toc] **`Spring`** 事务管理 `Api` 介绍之 **`PlatformTransactionManager`** 后记 #Spring 的事务管理 编程式事务管理 ...