编码

requests模块介绍

亡梦爱人 提交于 2020-02-11 20:51:07
一.requests模块 (1)requests模块的get方法 1、response = requests.get( url=请求url地址, headers = 请求头字典, params=请求参数字典 , ) 2、get请求一般带参数,带参数就将参数封装到params字典中就可以了。 案例:新浪新闻,两种分装params请求参数方式 3、response对象 (1)响应正文: a、字符串格式的响应正文:response.text b、字节类型(bytes)的响应正文:response.content (2)响应正文的乱码问题解决: a、encode和decode就是二进制和字符串之间转换方法。 编程里面数据载体 存储用变量或者常量 可以看到数据的内容一定是字符串格式。 正常的计算机数据本质都是二进制–bytes。 str.encode(‘编码’)—>bytes bytes.decode(‘编码’)---->str 乱码:编码不一致造成的 。 response.content.decode(‘页面的正确编码’)—得到页面正确的字符串内容 b、response.text之所以可以获取字符串格式,其实在requests模块的底层用 response.encoding这个属性所对应的编码来将二进制内容变成字符串。其实就是response.encoding所对应的编码错了

《编码》读书笔记:从无到有构建计算机系统

人走茶凉 提交于 2020-02-10 07:49:47
1 简单的电报系统: 按键、发声装置,电池和一些导线即可构成: 当电报机的键按下时,发生器的电磁铁将可动棒拖下发出“滴”的声音;当键放开时,棒弹回初始位置,发出“嗒”的声音。快速的“嘀嗒”为点,慢速的则为划。 2 继电器 电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。 长距离导线会有很大的电阻,会导致电流越来越小。下图中的继电器系统就是为了增大电流。 上述通信系统中的继电器的简单实现: 3 逻辑代数与电路 逻辑代数是分析和设计逻辑电路的数学基础。逻辑代数是由英国科学家乔治·布尔(George·Boole)创立的,故又称布尔代数。 4 逻辑门 (logic gates) 逻辑门和通常让水和人通过的门十分相似。逻辑门通过阻挡或允许电流通过在逻辑中执行简单的任务。 (1)与门

中文系统底层编码

家住魔仙堡 提交于 2020-01-07 19:57:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在程序中,若使用涉及到编码的方法,如getBytes(),并且未指定编码,则使用系统底层编码,而中英文系统的底层编码是不同的,中文系统如Win7为GB18030,Win Server2003为GBK,均为中文编码,英文系统如Win Server 2008为Cp1252,在使用getBytes()获得中文输入流时,若未指定编码为GBK之类,则英文系统的服务器无法获得正确的输入,为乱码,此时指定getBytes("GBK")即可。 来源: oschina 链接: https://my.oschina.net/u/2551089/blog/788534

对于Python字符编码的理解

帅比萌擦擦* 提交于 2020-01-07 07:47:50
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 首先请理解这句话: 对于Python的内建函数encode()和decode()来说,它都是针对 字符 在 内存中(用终端所处理字符的内存表示)介于Unicode与指定编码之间的转换。 示例一: s = '汉字' # shell终端编码为UTF-8,则s是UTF-8编码的字符 s.decode("UTF-8") # 将s通过UTF-8进行解码,得到u'\u6c49\u5b57' # 而对于u'\u6c49\u5b57'的Unicode编码内容,可以通过以下方式再次编码成UTF-8、GBK或者其他编码字符 u'\u6c49\u5b57'.encode("UTF-8") # 结果为'\xe6\xb1\x89\xe5\xad\x97',这与repr(s)得到的结果一致,即‘汉字’的UTF-8表示 u'\u6c49\u5b57'.encode("gbk") # 得到结果'\xba\xba\xd7\xd6',即‘汉字’的gbk表示 ‍ 知道上述基本内容,那便可以对Python处理不同编码字符时的本质和现象有个直观都印象。这个直观印象来自于我们直接通过终端进行文本输入时的表现;而涉及字符编码的另一种操作来自于文本 读写 。 再先请参看这篇博文: Python字符编码详解 。 这篇博文提到了我们读写文件时的两种方式

Java中编码问题

丶灬走出姿态 提交于 2019-12-26 08:07:57
在开发过程中经常会遇到一会乱码问题,不是什么大问题,但是也挺烦人的,今天来将我们开发总结的经验记录下来,希望可以给大家一些帮助。 一些概念: 字符:人们使用的记号,抽象意义上的一个符号。比如:‘1’,‘中’,‘a’ 字节:计算机中存储数据的单元,一个8位的二进制数,是一个很具体的存储空间 字符集:使用哪些字符。也就是说哪些汉字,字母和符号会被收入标准中。所包含“字符”的集合就叫做“字符集”。 编码:规定每个“字符”分别用一个字节还是多个字节存储,用哪些字节来存储,这个规定就叫做“编码” 平常我们所说的“字符集”,比如:GB2312, GBK, JIS 等,除了有“字符的集合”这层含义外,同时也包含了“编码”的含义。 各种编码: ASCII 码   因为计算机只认识数字,所以我们在计算机里面的一切数据都是以数字来表示,因为英文字符有限,所以规定使用的字节的最高位是 0,每一个字节都是以 0-127 之间的数字来表示。比如 A 对应 65,a 对应 97。这便是 美国标准信息交换码,ASCII码 GB2312 码   随着计算机在全球的普及,很多国家和地区都把自己的字符引入了计算机,比如汉字。此时发现一个字节能表示的数字范围太小,不能包含所有的中文汉字。那么就规定使用两个字节来表示一个汉字。   规定:原有的 ASCII 字符的编码保持不变,仍然使用一个字节表示

POST 和 GET 区别

不想你离开。 提交于 2019-12-23 19:55:11
1 接口的作用和是否幂等 缓存 GET 读取“一个资源 反复读取不应该对访问的数据有副作用,没有副作用被称为“幂等“(Idempotent)。 因为GET因为是读取,就可以对GET请求的数据做缓存。这个缓存可以做到浏览器本身上(彻底避免浏览器发请求),也可以做到代理上(如nginx),或者做到server端(用Etag,至少可以减少带宽消耗) POST 修改一个资源 往往是有副作用的,不幂等的。 不幂等也就意味着不能随意多次执行。因此也就不能缓存。 后台服务处理的时候 应该把post接口特殊处理成 接口幂等,以避免重复提交的问题。 2 GET和POST携带数据的格式有区别 POST用body传输数据,而GET用url传输 3 安全性 我们常听到GET不如POST安全,因为POST用body传输数据,而GET用url传输,更加容易看到。但是从攻击的角度,无论是GET还是POST都不够安全,因为HTTP本身是 明文协议 。 每个HTTP请求和返回的每个byte都会在网络上明文传播,不管是url,header还是body 。这完全不是一个“是否容易在浏览器地址栏上看到“的问题。 为了避免传输中数据被窃取, 必须做从客户端到服务器的端端加密。业界的通行做法就是https ——即用SSL协议协商出的密钥加密明文的http数据。这个加密的协议和HTTP协议本身相互独立

UTF-8编码规则(转)

ⅰ亾dé卋堺 提交于 2019-12-21 01:11:45
UTF-8编码规则(转) UTF-8是Unicode的一种实现方式,也就是它的字节结构有特殊要求,所以我们说一个汉字的范围是0X4E00到0x9FA5,是指unicode值,至于放在utf-8的编码里去就是由三个字节来组织,所以可以看出unicode是给出一个字符的范围,定义了这个字是码值是多少,至于具体的实现方式可以有多种多样来实现。 UTF-8是一种变长字节编码方式。对于某一个字符的UTF-8编码,如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头。UTF-8最多可用到6个字节。 如表: 1字节 0xxxxxxx 2字节 110xxxxx 10xxxxxx 3字节 1110xxxx 10xxxxxx 10xxxxxx 4字节 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 5字节 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 6字节 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 因此UTF-8中可以用来表示字符编码的实际位数最多有31位,即上表中x所表示的位。除去那些控制位(每字节开头的10等),这些x表示的位与UNICODE编码是一一对应的

Python&MySQL操作过程中遇到的编码问题

无人久伴 提交于 2019-12-13 17:43:20
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 对于Python字符编码的理解 之前整理了一部分,这次主要是设计到数据库操作的。 下面是一些编码方面的概念和原理,以条目方式整理: CREATE DATABASE IF NOT EXISTS db_name DEFAULT CHARSET utf8 COLLATE utf8_general_ci ; DEFAULT CHARSET是设置默认字符编码集,也就是数据在库内从存储编码,我的理解是在存储这个层面上的,如果SQL命令是以gbk方式传输数据的(cur.execute('SET NAMES utf8;')),那么存储时用utf8,则查询时看到的会是乱码; COLLATE utf8_general_ci;是指定校对规则,而校对规则是在字符集内用于比较字符的一套规则。通俗一点,我的理解是数据库以此用于字符数据之间的比对,注意是字符;也就是说“a B c D”这四个字母怎么样区分彼此,或者在数据库表内进行排序:如果设定为“ utf8_general_ci”,则按照普通的字母顺序,而且不区分大小写(a B c D)如果设定为“ utf8_bin”,则按照二进制排序(B D a c)。 关于编码和校对规则更深入的理解,请参看MySQL官网: 服务器字符集和校对 cur.execute(' SET NAMES utf8

java 获取 linux服务器文件名称乱码的解决方案

安稳与你 提交于 2019-12-10 14:10:40
问题: java程序读取linux上服务器 目录和文件,如果目录或文件名称为中文时,会出现乱码。 解决方案:保持程序、服务器编码一致。例如UTF-8 1.首先 网站页面采用 UTF-8 编码, 在JSP中配置 <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> 同时在扫描系统文件时,java 程序读取文件名称的方法设置编码为UTF-8。 (如果下面几步配置齐全了,这里无需设置,默认以系统编码读取) 2.Linux 系统配置语言环境为UTF-8 其中Centos 修改 /etc/sysconfig/i18n debian 修改/etc/default/locale LANG=zh_CN.UTF-8 或者 en_US.UTF-8 3.如果Tomcat 自启动 ,需要在启动时手动配置系统支持的语言和编码环境,否者无法生效 在 /etc/rc.local 设置 export LC_ALL=en_US.UTF-8 如果需要下载文件,文件名称中包含中文,在Server.xml 配置文件中的connector配置节中加入 URIEncoding="UTF-8" 4.如果采用 Flashfxp 等sftp工具上传的文件,需要配置工具的 传输编码为UTF-8 来源: oschina 链接: https://my

UTF-8 GBK UTF8 GB2312 之间的区别和关系

社会主义新天地 提交于 2019-12-09 11:00:43
UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。   GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBD大。   GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:   GBK、GB2312--Unicode--UTF8   UTF8--Unicode--GBK、GB2312   对于一个网站、论坛来说,如果英文字符较多,则建议使用UTF-8节省空间。不过现在很多论坛的插件一般只支持GBK。   个编码的区别详细解释   简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的