utf8

unicode 与 utf-8 编码概念及区别

北城余情 提交于 2020-03-06 13:38:02
unicode 是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。每个字符都对应一个编号,编号的范围是0-0x10FFFF来。Unicode 是为了解决 传统的字符编码方案 的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的 二进制 编码 UTF是“Unicode Transformation Format”的缩写,可以翻译成Unicode字符集转换格式,即怎样将Unicode定义的数字转换成程序数据。 在Unicode中:汉字“字”对应的数字是23383(十进制),十六进制表示为5B57。在Unicode中,我们有很多方式将数字23383表示成程序中的数据,包括: UTF-8 、 UTF-16 、 UTF-32 。 UTF-8以字节为单位对Unicode进行编码。并且是变长的,节省补0空间(总长 = 1字节+补0空间,比如对于 英文字符只用1个字节表示,不用补0)。而 Unicode 总是需要固定长的空间(总是要 补0)。 Unicode编码(十六进制)  UTF-8 字节流(二进制) 000000-00007F 0xxxxxxx 000080-0007FF 110xxxxx 10xxxxxx 000800-00FFFF 1110xxxx 10xxxxxx 10xxxxxx 010000-10FFFF

浅谈Unicode编码

孤者浪人 提交于 2020-03-06 13:36:29
目录 1.概述 2.ASCII编码 3.历史问题 4.Unicode 4-1.Unicode 编码方案 4-2.关于bom 5.UTF-8 6.UTF-16 1.概述 对于ASCII编码,相信同学们都比较了解,那么对于Unicode、UTF-8和UTF-16,它们是怎么编码的呢?以及它们之间的关系是什么呢?它们与ASCII之间又有什么关系? 本文就来回答这两个问题。 2.ASCII编码 在学校学 C 语言的时候,了解到一些计算机内部的机制,知道所有的信息最终都表示为一个二进制的字符串,每一个二进制位有 0 和 1 两种状态,通过不同的排列组合,使用 0 和 1 就可以表示世界上所有的东西,感觉有点中国“太极”的感觉——“太极生两仪,两仪生四象,四象生八卦”。 在计算机种中,1 字节对应 8 位二进制数,而每位二进制数有 0、1 两种状态,因此 1 字节可以组合出 256 种状态。如果这 256 中状态每一个都对应一个符号,就能通过 1 字节的数据表示 256 个字符。美国人于是就制定了一套编码(其实就是个字典),描述英语中的字符和这 8 位二进制数的对应关系,这被称为 ASCII 码。 ASCII 码一共定义了 128 个字符,例如大写的字母 A 是 65(这是十进制数,对应二进制是0100 0001)。这 128 个字符只使用了 8 位二进制数中的后面 7 位

iOS - Unicode编码

走远了吗. 提交于 2020-03-06 13:35:52
一、来历 为了统一编码,各大龙头企业就决定坐下来对全世界的字符进行编码,并且尽量兼容现有字符集,这就有了unicode编码。Unicode用了21个二进制位,能够编码一百多万个字符,但实际上并没有编码这么多。U+XXXX中XXXX就是码点,就是字符在unicode的数字表示。 编码空间被分成 17 个平面(plane),每个平面有 65,536 个字符。0 号平面叫做「基本多文种平面」(Basic Multilingual Plane, BMP),涵盖了几乎所有你能遇到的字符,除了 emoji。其它平面叫做补充平面,大多是空的。 二、UTF-32、UTF-16、UTF-8 什么字符被表示成什么样子的规定有了,就要考虑怎么存起来了,这就分成了UTF-32、UTF-16、UTF-8三种了。所以UTF-32、UTF-16、UTF-8只是unicode的三种实现方式。 三、UTF-32 unicode用了21位,那我就用4个字节存,准错不了,这就是UTF-32,由于它的极度浪费,所以基本上没人用。 四、UTF-16 UTF-16编码介于UTF-32与UTF-8之间,同时结合了定长和变长两种编码方法的特点。UTF-16把字符存储成2个字节或者4个字节。 具体如下: 基本平面的字符占用2个字节,辅助平面的字符占用4个字节。也就是说,UTF-16的编码长度要么是2个字节(U+0000到U

Unicode、UTF8、GB2312、ANSI

爷,独闯天下 提交于 2020-03-06 13:23:41
来源:https://blog.csdn.net/osanwenyu/article/details/48439461 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/oSanWenYu/article/details/48439461 一、前言 汉字编码是让人比较头疼的一块,最近下定决定把他搞懂。网上翻了个遍,讲得详细透彻的让人头疼看不下去,讲得通俗的不够详细,只言片语。更有甚者开篇即讲Unicode是啥,多少个字符,GB2312巴拉巴拉,多少个汉字,全然不讲应用场景,不理知识接受的先后,遂结合翻看过的几篇写一写心得。 二、字符编码的发展 ASCII --> 拓展字符集 -->GB2312(中国大陆) -->GBK - -> unicode 1.ASCII 最早的时候计算机只在美国使用,人民解决英文与二进制的映射关系,发明了ASCII编码,将所有大小写英文字母以及常用的英文标定符号编进去。还有一些并不代表文字意义但又经常要表达的操作也加了进去,这就是控制字符,如换行、回车、制表符等等。这时发现所有的字符都编进去了,才占用了127个,每个字符占用一个字节,这是一套完美的编码方式。 2.拓展字符集 后来科技发展,计算机在世界各国普及开来,英语地区还好,直接能显示英文

python编码(六)

こ雲淡風輕ζ 提交于 2020-03-06 04:38:51
1. 字符编码简介 1.1. ASCII ASCII (American Standard Code for Information Interchange),是一种单字节的编码。计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号。不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础。 1.2. MBCS 然而计算机世界里很快就有了其他语言,单字节的ASCII已无法满足需求。后来每个语言就制定了一套自己的编码,由于单字节能表示的字符太少,而且同时也需要与ASCII编码保持兼容,所以这些编码纷纷使用了多字节来表示字符,如 GBxxx 、 BIGxxx 等等,他们的规则是,如果第一个字节是\x80以下,则仍然表示ASCII字符;而如果是\x80以上,则跟下一个字节一起(共两个字节)表示一个字符,然后跳过下一个字节,继续往下判断。 这里,IBM发明了一个叫Code Page的概念,将这些编码都收入囊中并分配页码,GBK是第936页,也就是 CP936 。所以,也可以使用CP936表示GBK。 MBCS (Multi-Byte Character Set)是这些编码的统称。目前为止大家都是用了双字节,所以有时候也叫做 DBCS (Double-Byte Character Set)。必须明确的是

爬取网页时出现了中文编码乱码的问题的解决方案

ぃ、小莉子 提交于 2020-03-06 04:31:50
在网站看到编码是utf-8的,但是出现了乱码,感觉肯定不是使用了utf-8的中文编码形式 import requests r = requests.get('http://www.baidu.com/') print (type(r)) # <class 'requests.models.Response'> print (r.encoding) # ISO-8859-1 print (r.apparent_encoding) # GB2312 r.apparent_encoding是通过内容分析出的编码 print ((r.text.encode(r.encoding).decode(r.apparent_encoding))) # 返回不乱码的代码 来源: https://www.cnblogs.com/trunkslisa/p/10945153.html

Servlet中的编码问题

…衆ロ難τιáo~ 提交于 2020-03-06 02:26:04
对于response.setContentType()和response.setCharacterEncoding()的理解: 经过一些实践,对着两个方法有了一些自己的理解,有可能今后的学习中会发现自己现在得理解是错误的,到时候再改吧。 setCharacterEncoding()方法的作用是指定对服务器响应进行重新编码,与此同时,浏览器也会根据这个参数进行解码。所以,无论将此方法的参数设定为“UTF-8”还是“GBK”,浏览器均能正确显示中文。 如: 代码为 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); //response.setContentType("text/html;charset=UTF-8"); 浏览器显示如下: 代码为: request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("GBK"); // response.setContentType("text/html;charset=UTF-8"); 浏览器显示如下: 而setContentType()方法的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。

hashlib模块

最后都变了- 提交于 2020-03-05 16:55:17
1 import hashlib 2 obj = hashlib.sha256() 3 obj.update('admin'.encode('utf-8')) 4 print(obj.hexdigest()) 5 print(len(obj.hexdigest())) 6 输出: 7 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 8 64 1 import hashlib 2 3 obj = hashlib.md5() 4 obj.update('中国'.encode('utf-8')) 5 print(obj.hexdigest()) 6 输出: 7 c13dceabcb143acd6c9298265d618a9f 可以使用叠加字符串进行加言 来源: https://www.cnblogs.com/ch2020/p/12420973.html

python语言基础笔记

扶醉桌前 提交于 2020-03-05 07:52:47
二进制数据则由bytes类型表示 python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节为单位的。 b'\xe4\xb8\xad\xe6\x96\x87' \x表示16进制 ______________________________________________________________________________ #coding=gbk var=input("请输入十六进制数:") #16进制转化二进制 b=bin(int(var,16)) print(b[2:]) _____________________________________________________________________________________ print(format(ord('周'),'b')) 中文转化8进制再转二进制; string:UNICODE unicode类型名词叫:string unicode是文本显示用,根据不同的软件可以encoding不同的软件显示编码。 bytes: bytes bytes类型名词叫:bytes python3编码最大的改变: 把字节串与字符串彻底分开!bytes为存储字节码编码方式 (中文显示unicode,encode--utf8-

python16_day07【Socket网络编程】

匆匆过客 提交于 2020-03-05 02:45:41
/*--> */ /*--> */ 一、简介   1.理解C/S,B/S   2.IOS七层模型(http://www.cnblogs.com/linhaifeng/articles/5937962.html)    二、什么是Socket   我们看看Socket的位置在什么地方?   Socket是应用层与 TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中, Socket其实就是一个门面模式,它把复杂的 TCP/IP协议族隐藏在 Socket接口后面,对用户来说,一组简单的接口就是全部,让 Socket去组织数据,以符合指定的协议。 所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。 三、Socket工作流程   先从服务器端说起。服务器端先初始化 Socket,然后与端口绑定 (bind),对端口进行监听 (listen),调用 accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个 Socket,然后连接服务器 (connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束 1