编码gbk的不可映射字符_Python基础:编码表和字符的故事

在计算机内部,都是每8位组成的一个个字节,比如我们使用"abc".encode()把abc转化成二进制byte类型,注意byte是不可变类型:

43e405b498e1d1407f7b4d78528908ef.png

编码过程

>>> abc.encode() # 把str字符变为bytes字节类型;字符是一个个连接的,转化出来的bytes也是一个个连续的。
b'abc'
>>> "阿".encode("utf-8")  # 一个汉字 uft-8里多是3个字节
b'xe9x98xbf'
>>> "阿".encode("gbk")  # 一个汉字 gbk里是2个字节
b'xb0xa2'

解码过程

>>> b'xe9x98xbf'.decode() #使用默认的utf-8 进行解码
'阿'
>>> b'xb0xa2'.decode("gbk") # 因为刚才是用gbk编码的,我们就用gbk解码,否则就会乱码
'阿'
>>> b'abc'.decode()
#  **这里要注意不要看这里的abc**,这里的abc只是一种展现形式,
#因为这只是二进制的展示形式
'abc'

ASCII 码

从0到127,共128种变化。它是用1个字节(1个字节有8位)表示的。 关于8位,就是从0000 0000到1111 1111组成的数字,最高位不动,剩下的低7位变化,所以共有(2的8次方,1 0000 0000,即128)种状态,即0-127,其中127对应的就是0FFF FFFF。

为了用计算机表达字符,人们建了对照表。 比如1,对于计算机来说,计算机里原本是0000 0001,我们告诉计算机不要把0100 0001当65看了,请把它当a看

计算机中,内存只能保存数字,那对于文字该怎么办呢? 对于文字 我们告诉内存这个东西请当做文字处理而不是数字; 那么,我们就要给计算机一个表,这个表的本质就是数值和字符的对应映射关系

类似这样比较常见建议背诵的有: - 09>>> TAB

>>> c = "t" # 转义字符的tab
>>> c
't'
>>> c = "x09" # 十六进制的9
>>> c
't'
  • 0d0a >>> 回车换行 # 即十进制的1310
>>> d = "rn"
>>> d
'rn'
>>> d = "x0dx0a"
>>> d
'rn'
  • 0x20>>>空格 即decimal 32
>>> e = " "
>>> e
' '
>>> e = "x20"
>>> e
' '
  • 阿拉伯数字0x31 >>>字符1 即decimal 49
>>> c =1 # 整数1与ascii码表无关
>>> d = "1" # 字符1,那就要查表
>>> d
'1'
>>> d = "x31"
>>> d
'1'
  • A >>> 0x41 即 65
  • a>>> 0x61 即97
>>> x = "x41"
>>> x
'A'
>>> y = "x61"
>>> y
'a'
# 举例
>>> z = "ax09bx0dx0ac x31x41x61" 
# 相当于z = 'atbrnc 1Aa'
>>> z
'atbrnc 1Aa'

大小规则 常见ASCII码的大小规则:09<AZ<a~z。 1)数字比字母要小。如 “7”<“F”; 2)数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ; 3)字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ; 4)同个字母的大写字母比小写字母要小32。如“A”<“a” 。 几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48 [4] 。

单字节的故事:欧美国家

ASCII码0-127低8位解决了英语问题,欧洲法国德国俄国西班牙等,就用了高8位,各自解决了自己的信息化问题:即==低8位兼容ascii码,高8位各自为政== 高八位加低八位共一个字节。

双字节的中文GB2312>>GBK

仅仅能够解决英美国家拉丁文等字母文字的编码,但无法解决中文体系的方块字,因为方块字的数量太多了。一个字节不够,于是我们开始使用2个字节即65536种状态表达汉字。 为了兼容ASCII码,汉字是把双字节的每一个0x80之前的都让过的。比如啊,xb0xa1,每个字节都高于0x800x80。 GB2312汉字数量较少(也包含了部分日文),最后发展成了GBK,现在window内部使用额就是双字节的GBK。

双字节的统一:unicode

Unicode和iso都可以实现用双字节把全世界已知字符收录,后来合二为一成为Unicode。 Unicode和GBK之间存在映射关系

互联网时代,双字节的进化-utf-8

Unicode始终是双字节,这样本来用单字节表达的字母,也需要用双字节,影响了网络时代的网络传输。 于是适应网络时代的utf-8出现了,utf-8有1-6个字节兼容了所有字节,ascii码依然是单字节;中文字符大多落在3个字节。

last not the least: str在字符的世界中,是有编码的,要查编码表; bytes在字节的世界里,只有一个个字节,没有编码。

今日鸡汤: 标准之争才是至高争夺。

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

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

相关文章

java mysql数据库编程_java JDBC数据库(mysql)编程

什么是JDBC• JDBC(Java Data Base Connectivity,Java数据库连接)• 是一种用于执行SQL语句的Java API&#xff0c;为多种关系数据库提供统一访问• 它由一组用Java语言编写的类和接口组成JDBC访问数据库步骤• 1&#xff1a;加载一个Driver驱动要通过JDBC与数据库连接&#xf…

python数据分析包pandas_Python 数据分析包:pandas 基础

pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包 类似于 Numpy 的核心是 ndarray&#xff0c;pandas 也是围绕着 Series 和 DataFrame 两个核心数据结构展开的 。Series 和 DataFrame 分别对应于一维的序列和二维的表结构。pandas 约定俗成的导入方法如下&…

mysql 查询分析器中使用if_查询分析器中开发代码测试检查_MySQL

如果您像我一样&#xff0c;则可能已经花费了很多时间在查询分析器中开发代码。在您对代码感到满意之后&#xff0c;可以立即对开发服务器上的测试数据库运行一个或两个专设 测试。如果看起来没有什么问题&#xff0c;您便可以将代码投入生产。如果这是一段关键代码&#xff0c…

python文本清洗_【python】TXT文本数据清洗和英文分词、词性标注

删除空白行def clean_line (raw_file_name save_file_name):张开(raw_file_name, r )作为f_r,开放(save_file_name, w ) f_w: f_r_list 列表(设置(f()))在f_r_list句子:如果句子 \u201C\\ n\u201D: f_r_(句子)f (f_r_list)阅读文本的每一行作为一个列表,然后使用一组集合来删除…

centeros6.8 mysql_centeros7安装mysql8,以及设置root密码

2.点击下载后&#xff0c;在下载页面选择操作系统3.点击下载rpm文件&#xff0c;拿到这个下载链接4.移除mariadb数据库yum remove mariadb-libs.x86_645.进入到/tmp目录使用wget下载wget https://repo.mysql.com//mysql80-community-release-el7-2.noarch.rpm6.安装mysql的源yu…

mysql 中文字段名_MySQL全文索引怎么做?| 教程分享

- 点击上方“爱数据学习社”关注我们吧&#xff01; -文末领取【商业分析资料】为什么要用全文索引我们在用一个东西前&#xff0c;得知道为什么要用它&#xff0c;使用全文索引无非有以下原因&#xff1a;like查询太慢、json字段查询太慢(车太慢了)没时间引入ElasticSearch、S…

centos php mysql 5.6 安装_centos 6.8 yum安装 PHP 5.6

1.检查当前安装的PHP包。yum list installed | grep php2.如果有安装的PHP包&#xff0c;先删除他们。先复制到文本中&#xff0c;编辑成一行&#xff0c;在执行。yum remove php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x86_64 php-ldap.x86_64php-mbstring.x86_64 p…

leftjoin多个on条件_MYSQL|为什么LEFT JOIN会这么慢?

之前谈了怎样后台导出SAP序时账&#xff0c;因为导出的序时账数据量较大(3家主体公司&#xff0c;2017-2020年的数据)&#xff0c;用了数据库MYSQL中的LEFT JOIN 来处理连接多表汇总数据&#xff0c;查询太慢啦&#xff0c;后来沦落到用手工分年来汇总数据&#xff0c;然后再导…

python 画布包括不了全部组件?_试验程序:画布版九键琴

近期有读者询问如何制作出滑动琴键连续发出声音的程序&#xff0c;他尝试用一排按钮充当琴键&#xff0c;但每次滑动只能触发一个按钮的点击事件&#xff0c;因此也只能发出一个声音。我提示他用画布替代按钮&#xff0c;他希望给予更具体的提示&#xff0c;于是我索性自己做了…

c 子类对象 访问父类对象受保护成员_06-JavaSe面向对象

一.static1.它是一种修饰符2.使用位置&#xff1a;它用来修饰成员变量和成员方法static修饰成员变量&#xff0c;叫类变量&#xff1b;static修饰成员方法&#xff0c;叫类方法&#xff1b;类成员类变量类方法没有使用static修饰成员变量&#xff0c;叫实例变量&#xff1b;没有…

keil中断函数的写法_在 KeilC里,中断子程序与函数有何不同?( )_学小易找答案

【单选题】8051单片机共有( )个中断优先级【单选题】对定时器 0 进行关中断操作,需要复位中断允许控制寄存器的: ( )【多选题】真理向谬误转化的原因,主要在于( )【多选题】“批判的武器当然不能代替武器的批判,物质的力量只能用物质的力量来摧毁,理论一经群众掌握,也会变成物质…

c++ stack 遍历_C/C++内存分配!

一、预备知识—程序的内存分配一个由c/C编译的程序占用的内存分为以下几个部分1、栈区&#xff08;stack&#xff09;— 由编译器自动分配释放 &#xff0c;存放函数的参数值&#xff0c;局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区&#xff08;heap&#xff09;…

python读取oracle数据到hvie parquet_关于sparksql操作hive,读取本地csv文件并以parquet的形式装入hive中...

说明&#xff1a;spark版本&#xff1a;2.2.0hive版本&#xff1a;1.2.1需求&#xff1a; 有本地csv格式的一个文件&#xff0c;格式为${当天日期}visit.txt,例如20180707visit.txt&#xff0c;现在需要将其通过spark-sql程序实现将该文件读取并以parquet的格式通过外部表的形式…

el-date-picker设置默认日期_程序员必备:Java 日期处理的十个坑

前言整理了Java日期处理的十个坑&#xff0c;希望对大家有帮助。一、用Calendar设置时间的坑反例&#xff1a;Calendar c Calendar.getInstance();c.set(Calendar.HOUR, 10);System.out.println(c.getTime());运行结果&#xff1a;Thu Mar 26 22:28:05 GMT08:00 2020解析&…

scope python_Python标准库Scope

作者&#xff1a;zhbzz2007 出处&#xff1a;http://www.cnblogs.com/zhbzz2007 欢迎转载&#xff0c;也请保留这段声明。谢谢&#xff01;1 模块简介你一定在很多计算机科学课程上听说过作用域。它很重要&#xff0c;如果你不理解它的工作原理&#xff0c;那么就会出现一些令人…

java命令_JAVA与模式之命令模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述命令(Command)模式的&#xff1a;命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化&#xf…

android 16进制 全透明_你有几种实现方案Android 设备唯一标识?

前言项目开发中&#xff0c;多少会遇到这种需求&#xff1a;获得设备唯一标识DeviceId&#xff0c;用于&#xff1a;1.标识一个唯一的设备&#xff0c;做数据精准下发或者数据统计分析&#xff1b;2.账号与设备绑定&#xff1b;3.....分析这类文章&#xff0c;网上有许多资料&a…

链表的数据域怎么使用结构体_一步一步教你从零开始写C语言链表

为什么要学习链表&#xff1f;链表主要有以下几大特性&#xff1a;1、解决数组无法存储多种数据类型的问题。2、解决数组中&#xff0c;元素个数无法改变的限制(C99的变长数组&#xff0c;C也有变长数组可以实现)。3、数组移动元素的过程中&#xff0c;要对元素进行大范围的移动…

python计算bmi_Python编程语言:如何用Python编程来判断体重指数BMI是否健康

上一篇小编分享了自己学习Python语言有关字符串和模块time使用的相关知识&#xff0c;这一篇小编分享给大家的是比较有趣的运用&#xff0c;那就是如何用Python编程来表示自己体重BMI。 用Python程序来算出我们自己的BMI指数&#xff0c;来判断我们自己的健康情况&#xff0c;首…

drbd实现mysql地热备_heartheartbeat+drbd+mysql主库热备

1 环境主机名网卡磁盘mastereth0 桥接模式 eth0(192.168.1.10) 自定义模式(VMnet2)(192.168.2.10)VIP 192.168.1.200/210系统盘20G外接磁盘slaveeth0 桥接模式(192.168.1.20) eth1 自定义模式(VMnet2)(192.168.2.20)VIP 192.168.1.200/210系统盘20G外接磁盘server3eth0 桥接模式…