专栏首页深度学习之tensorflow实战篇字节码:ASCII编码:单字节编码,ANSI编码:多字节编码,UNICODE编码:宽字节编码

字节码:ASCII编码:单字节编码,ANSI编码:多字节编码,UNICODE编码:宽字节编码

字符字节与编码

字符是人们常用的一些记号,比如”1”, “汉”, “お”,”℃”等等,包括各种语系的语言和一些符号都可以被称为字符。 字节是计算机存储数据的存储单元,是一个8位的二进制数,所以最多只能表示256个数字(0-255)。 编码是大家对计算机如何使用字节来表示一个字符的约定,可分为ASCII编码,ANSI编码(本地化编码),UNICODE编码(国际化编码)三种。

1.ASCII编码:单字节编码。

最初的编码,由一个字节组成,因此只能表示256个字符,但只表示0-9,a-z,A-Z,和一些加减乘除百分号,够老美用了。

后来ISO国际标准组织以ASCII编码为基础,约定了ISO 8859-1编码,又称Latin1编码。(Mysql的默认存储编码)

2.ANSI编码:多字节编码。

如果只有ASCII编码的话,计算机岂不只能表示英文字母和数字还有几个加减乘除号,中文怎么办,阿拉伯文怎么办,日文怎么办?

由于一个字节只能表示255个数字,所以中国约定了GBK编码规则,约定用0x80-0xFF范围内的某两个字节来表示某一个中文字符。

日本约定了JIS编码规则,他们约定0x80-0xFF范围内的某两个字节来表示某个日文字符。

中国台湾约定了BIG5编码规则,约定0x80-0xFF范围内的某两个字节表示某个繁体中文字符。

所以我们拿到了一个ANSI字节串的时候,我们还必须知道这个字节串的编码,才能将这个字节串转换成相应国家的字符串。

3.UNICODE编码:宽字节编码

(一)“字节”的定义

字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位。

(二)“字符”的定义

字符是指计算机中使用的文字和符号,比如1、2、3、A、B、C、~!·#¥%……—*()——+、等等。

(三)“字节”与“字符”

它们完全不是一个位面的概念,所以两者之间没有“区别”这个说法。不同编码里,字符和字节的对应关系不同:

①ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。

②UTF-8编码中,一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。

③Unicode编码中,一个英文等于两个字节,一个中文(含繁体)等于两个字节。

符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。

④UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。

⑤UTF-32编码中,世界上任何字符的存储都需要4个字节。

ANSI编码有很多种,但是都只是规定自己国家的语言,这时候出现了UNICODE编码,该编码类似于ANSI,使用多个字节表示一个字符,UNICODE编码把世界上各种主要语言都进行了编码,当然UNICDOE编码也出现了很多种编码方案,比如使用8个二进制位的UTF8以及使用16个二进制位的UTF16等等。

python3 中编码

在py3里,只有 unicode编码格式 的字节串才能叫作str。 其他编码格式的统统都叫bytes,如:gbk,utf-8,gb2312………… 在py3中,==Unicode编码就像是一个枢纽==,例如gbk的格式要想转化成utf-8,那么必须先转化成Unicode,然后再从Unicode转化成utf-8。 在python3中可以利用import chardet来进行文件编码处理

 rawdata =requests.get('http://www.google.cn/').read()
 chardet.detect(rawdata)

chardet是一个python3自带的库,用于检测文本的编码方式,他会返回一个字典,格式是{==”encoding” : “xxx”, “confidence” :” xxx”==}但是注意它一般只能检测bytes类型的编码格式

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 字节码:ASCII编码:单字节编码,ANSI编码:多字节编码,UNICODE编码:宽字节编码

    字符是人们常用的一些记号,比如”1”, “汉”, “お”,”℃”等等,包括各种语系的语言和一些符号都可以被称为字符。 字节是计算机存储数据的存储单元,是一个8位...

    学到老
  • RStudio中,出现中文乱码问题的解决方案

    RStudio中,出现中文乱码问题的解决方案 正常出现乱码问题, 解决步骤: 1、设置RStudio文本显示的默认编码: RStudio菜单栏的Tools...

    学到老
  • RStudio中,出现中文乱码问题的解决方案

                                                     RStudio中,出现中文乱码问题的解决方案

    学到老
  • 字节码:ASCII编码:单字节编码,ANSI编码:多字节编码,UNICODE编码:宽字节编码

    字符是人们常用的一些记号,比如”1”, “汉”, “お”,”℃”等等,包括各种语系的语言和一些符号都可以被称为字符。 字节是计算机存储数据的存储单元,是一个8位...

    学到老
  • 基础知识:字符编码

    1、什么实字符编码:将人识别的字符转换成计算机能识别的01,而转换的过程或者规则就是字符编码表。

    py3study
  • Java中编码问题

    在开发过程中经常会遇到一会乱码问题,不是什么大问题,但是也挺烦人的,今天来将我们开发总结的经验记录下来,希望可以给大家一些帮助。

    说故事的五公子
  • 漫谈计算机编码

    我们知道,在计算机内部,所有的信息都是以二进制形式进行存储。无论是字符,或是视频音频文件,最终都会对应到一串由 0 和 1 构成的数字串。所以从我们能看懂的人类...

    Single
  • java中byte, iso-8859-1, UTF-8,乱码的根源

    Post@https://ryan-miao.github.io 测试代码https://github.com/Ryan-Miao/someTest/comm...

    Ryan-Miao
  • 一篇文章帮你解决中文乱码问题---JavaWeb中文编码问题全面解析

    这就是为什么我们在浏览器的地址栏中能看到中文,但是把地址拷贝出来后中文就变成了一些奇怪的串了。

    谭庆波
  • Java基础——IO流

      今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的...

    mukekeheart

扫码关注云+社区

领取腾讯云代金券