字符编码

ASCII,ANSI,UNICODE,UTF-8,UNICOD BIG Endian 等字符编码问题

时光总嘲笑我的痴心妄想 提交于 2020-03-25 10:00:20
3 月,跳不动了?>>> 字符集简史: 在所有字符集中,最知名可能要数被称为ASCII的7位字符集了。它是美国信息交换标准委员会(American Standards Committee for Information Interchange)的缩写, 为美国英语通信所设计。它由128个字符组成,包括大小写字母、数字0-9、标点符号、非打印字符(换行符、制表符等4个)以及控制字符(退格、响铃等) 组成。 但是,由于他是针对英语设计的,当处理带有音调标号(形如汉语的拼音)的欧洲文字时就会出现问题。因此,创建出了一些包括255个字符的由ASCII扩展 的字符集。其中有一种通常被成为IBM字符集,它把值为128-255之间的字符用于画图和画线,以及一些特殊的欧洲字符。另一种8位字符集是ISO 8859-1 Latin 1,也简称为ISO Latin-1。它把位于128-255之间的字符用于拉丁字母表中特殊语言字符的编码,也因此而得名。 欧洲语言不是地球上的唯一语言,因此亚洲和非洲语言并不能被8位字符集所支持。仅汉语(或pictograms)字母表就有80000以上个字符。但是把 汉语、日语和越南语的一些相似的字符结合起来,在不同的语言里,使不同的字符代表不同的字,这样只用2个字节就可以编码地球上几乎所有地区的文字。因此, 创建了UNICODE编码。它通过增加一个高字节对ISO Latin

[python之路]变量和字符编码

那年仲夏 提交于 2020-03-24 23:14:46
变量和字符编码 #变量 ##声明变量 ``` #_*_coding:utf-8_*_ name = "Tom" ``` 上述代码声明了一个变量,变量名为: name,变量name的值为:"Tom"  ##变量定义的规则: 变量名只能是 字母、数字或下划线的任意组合 变量名的第一个字符不能是数字 以下关键字不能声明为变量名 除了类名单词首字母大写其他一律小写字母,单词之间用_分割 ``` ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield'] ``` _ 1、在解释器中代表交互式解释器会话中上一条执行的语句的结果。这种用法首先被标准CPython解释器采用,然后其他类型的解释器也先后采用。2、作为一个名称:这与上面一点稍微有些联系,此时作为临时性的名称使用。这样,当其他人阅读你的代码时将会知道,你分配了一个特定的名称

python编码问题(2)

谁都会走 提交于 2020-03-24 19:32:36
1 编码、解码   如同密码领域一样,从明文到密码是加密,从密码到明文是解密。在python中,(编码:unicode-->str;) 解码(str-->unicode). 既然是编码,那么就和密码领域一样,编码和解码自然涉及到编码/解码方案(对应加密或者解密算法),unicode相当于明文。在python中,编码函数是encode(),解码函数是decode()。需要注意的一点是,如果我们调用str.encode(),这里涉及到一个隐士的类型转化,会现将str转化成unicode,才能进行编码,这也是不太容易理解的地方。所以,str.encode()实际上就等价于str.decode(sys.defaultencoding).encode().而sys.defaultencoding一般是ascii,它是不能用来编码中文字符的。  字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。   decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码

Python day1 变量、字符编码、用户交互程序、if、while

半世苍凉 提交于 2020-03-24 18:42:10
一、变量 1 #!/usr/bin/env python 2 # -*- utf-8 -*- 3 # Author:Wang Lulu 4 name ="Wang Lulu" #变量赋值 5 name2 = name #变量赋值可以使用变量(这里name2是指向Wanglulu的并不随着name变量的变化而变化) 6 print("Hello world") #输出格式 7 print("My name is ",name,name2) #输出格式 8 name = "Fan Shuangshuang" 9 print(name,name2) 10 GF_of_Wanglulu = "Fan Shuangshuang" 变量定义规则(1一般以下划线区分2可以下划线开头但是最多写两个3或者利用字母开头大写区分) 11 GFOfWanglulu = "Fan Shuangshuang" 12 print("I Love You",GF_of_Wanglulu) 二、字符编码 1 2 4 8 16 32 64 128 256 1 1 1 1 1 1 1 1 1 2**0 2**1 2**2 2**3 2**4 2**5 2**6 2**7 2**8 2=1+1 4=2+1+1 8=4+2+1+1 16=8+4+2+1+1 ASCII 最多只能用8位来表示(一个字节),即2**8=256

Linux 文件编码大挪移

和自甴很熟 提交于 2020-03-23 11:15:52
3 月,跳不动了?>>> 你可能已经知道,计算机除了二进制数据,是不会理解和存储字符、数字或者任何人类能够理解的东西的。一个二进制位只有两种可能的值,也就是0或1,真或假,是或否。其它的任何事物,比如字符、数据和图片,必须要以二进制的形式来表现,以供计算机处理。 简单来说,字符编码是一种可以指示电脑来将原始的 0 和 1 解释成实际字符的方式,在这些字符编码中,字符都以一串数字来表示。 字符编码方案有很多种,比如 ASCII、ANCI、Unicode 等等。下面是 ASCII 编码的一个例子。 字符 二进制 A 01000001 B 01000010 在 Linux 中,命令行工具iconv用来将使用一种编码的文本转化为另一种编码。 你可以使用 file 命令,并添加-i或--mime参数来查看一个文件的字符编码,这个参数可以让程序像下面的例子一样输出字符串的 mime (Multipurpose Internet Mail Extensions) 数据: $ file -i Car.java $ file -i CarDriver.java 在 Linux 中查看文件的编码 iconv 工具的使用方法如下: $ iconv option $ iconv options -f from-encoding -t to-encoding inputfile(s) -o

Linux 文件编码大挪移

梦想的初衷 提交于 2020-03-23 11:13:32
3 月,跳不动了?>>> 在这篇教程中,我们将解释字符编码的含义,然后给出一些使用 命令 行工具将使用某种字符编码的文件转化为另一种编码的例子。最后,我们将一起看一看如何在 Linux 下将使用各种字符编码的文件转化为 UTF-8 编码。 你可能已经知道,计算机除了二进制数据,是不会理解和存储字符、数字或者任何人类能够理解的东西的。一个二进制位只有两种可能的值,也就是 0 或 1 , 真 或 假 , 是 或 否 。其它的任何事物,比如字符、数据和图片,必须要以二进制的形式来表现,以供计算机处理。 简单来说,字符编码是一种可以指示电脑来将原始的 0 和 1 解释成实际字符的方式,在这些字符编码中,字符都以一串数字来表示。 字符编码方案有很多种,比如 ASCII、ANCI、Unicode 等等。下面是 ASCII 编码的一个例子。 字符 二进制 A 01000001 B 01000010 在 Linux 中, 命令 行工具 iconv 用来将使用一种编码的文本转化为另一种编码。 你可以使用 file 命令,并添加 -i 或 --mime 参数来查看一个文件的字符编码,这个参数可以让程序像下面的例子一样输出字符串的 mime (Multipurpose Internet Mail Extensions) 数据: $ file -i Car.java $ file -i CarDriver

内容传送编码Base64原理

夙愿已清 提交于 2020-03-23 03:18:32
什么是Base64?   按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形 式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.) 为什么要使用Base64?   在设计这个编码的时候,我想设计人员最主要考虑了3个问题:   1.是否加密?   2.加密算法复杂程度和效率    3.如何处理传输?   加密是肯定的,但是加密的目的不是让用户发送非常安全的Email。这种加密方式主要就是“防君子不防小人”。即达到一眼望去完全看不出内容即 可。基于这个目的加密算法的复杂程度和效率也就不能太大和太低。和上一个理由类似,MIME协议等用于发送Email的协议解决的是如何收发Email, 而并不是如何安全的收发Email。因此算法的复杂程度要小,效率要高,否则因为发送Email而大量占用资源,路就有点走歪了。但是,如果是基于以上两 点,那么我们使用最简单的恺撒法即可,为什么Base64看起来要比恺撒法复杂呢?这是因为在Email的传送过程中,由于历史原因,Email只被允许

mysql数据库修改字符编码问题

走远了吗. 提交于 2020-03-23 02:51:45
遇到这种情况,现有项目的数据库已经建好,数据表也已经创建完成。 问题来的,数据库不能插入中文,调试时候发现中文数据从发送请求到最后请求处理完成这些步骤,中文还没有发生乱码。 只有在存储到数据库后查询数据并显示才会乱码。 那么到此可以确定是mysql出现问题了。 那么应该怎么办呢?哈哈,当然是看我们的度娘啦! 看的下度娘解决方法是: 将数据库的编码修改为utf8编码格式,因为安装mysql默认使用的字符编码latin1 what?这个编码是什么鬼,见都没见过。 查了下,Latin1是 ISO-8859-1 的别名。因为ISO-8859-1编码范围使用了单 字节 内的所有空间,在支持ISO-8859-1的系统中传输和存储其他任何编码的 字节流 都不会被抛弃 这个latin1编码是单字节编码,而一般汉字是需要两个字节存储,所以这个编码格式不支持汉字。 接下来就看怎么改吧 数据库字符优先级有:系统级、数据库级、表级、字段。这5个优先级中字段优先级最高。举个列子。我们要向表中存储中文数据。如果表的字符编码是utf8,而字段的字符编码是latin1。那么如果我们存储中文还是会出现乱码,因为使用的编码是字段的字符编码latin1 在数据库创建时如果不设置数据库的默认字符编码,即缺省时会使用系统的字符编码latin1。创建表缺省时使用数据库的字符编码,字段同理。 从上面可以得出一个重要结论

Python数据库操作 Mysql数据库表引擎与字符集#学习猿地

被刻印的时光 ゝ 提交于 2020-03-20 12:22:47
# Mysql数据库表引擎与字符集 ![](./imgs/752951346A5F4E7EBDE362FA97107707.png) ### 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:**客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果)。**那服务器进程对客户端进程发送的请求做了什么处理,才能产生最后的处理结果呢?客户端可以向服务器发送增删改查各类请求,我们这里以比较复杂的查询请求为例来画个图展示一下大致的过程: ![image](./imgs/167f4c7b99f87e1c.png) > 虽然查询缓存有时可以提升系统性能,但也不得不因维护这块缓存而造成一些开销,比如每次都要去查询缓存中检索,查询请求处理完需要更新查询缓存,维护该查询缓存对应的内存区域。从MySQL 5.7.20开始,不推荐使用查询缓存,并在MySQL 8.0中删除。 ### 2.存储引擎 `MySQL`服务器把数据的存储和提取操作都封装到了一个叫`存储引擎`的模块里。我们知道`表`是由一行一行的记录组成的,但这只是一个逻辑上的概念,物理上如何表示记录,怎么从表中读取数据,怎么把数据写入具体的物理存储器上,这都是`存储引擎`负责的事情。为了实现不同的功能,`MySQL`提供了各式各样的`存储引擎`

python学习--字符编码问题

依然范特西╮ 提交于 2020-03-19 17:23:44
计算机只能处理数字,处理文本要先把文本转换成二进制文件。8个二进制位为一个字节byte。00000000 三种字符编码格式: 1、ASCII编码:美国人发明,用 一个字节 表示所有的大小写英文字母及标点符号。 2、Unicode编码:万国码,包含大部分国家的编码。通常是 两个字节 。 3、utf-8编码:(廖老师)如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的 UTF-8 编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的 英文字母被编码成1个字节,汉字通常是3个字节 ,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。 计算机内存中使用的是Unicode编码 对单个字符,python提供了 ord() 函数获取字符的整数表示, chr() 函数把编码转换为对应的字符 print(ord('a')) #97 print(chr(97)) #a bytes类型的数据用带b的前缀表示 b'ABC' 表示三个字节 encode()字符串通过encode可以编码为指定的字节 t1='你好'