【105】ascii、unicode、utf-8、gbk、ANSI、Latin1、字节码和机器码



♣题目部分      ascii、unicode、utf-8、gbk、ANSI、Latin1区别?      字节码和机器码的区别?     




♣答案部分编码是从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码。 计算机中存储信息的最小单元是一个字节,即8个bit。Ascii:早期编码,只支持英文字母和一些符号,ASCII能编码的字母和符号只有128个。Unicode:万国码,能表示多种符号,在PY2中可以指定4字节或2字节表示一个字符,PY3中默认4字节;UTF-8: 用最短的方式表示unicode,一个英文字符占一字节,99%的前端写网页时都会加上<meta charset="utf8">,99%的后端工程师新建数据库表时都会加上DEFAULT CHARSET=utf8(剩下的1%应该是忘了写)。ANSI编码:准确说,并不存在哪种具体的编码方式叫做ANSI,它只是一个Windows操作系统上的别称而已。在中文简体Windows操作系统上,ANSI就是GBK;在泰语操作系统上,ANSI就是TIS-620(一种泰语编码);在韩语操作系统上,ANSI就是EUC-KR(一种韩语编码)。并且所谓的ANSI只存在于Windows操作系统上。GB2312、GBK、GB18030编码:中文编码,GB全称GuoBiao国标,GBK全称 GuoBiaoKuozhan国标扩展。GB18030编码兼容GBK,GBK兼GB2312。对于中文汉字来说,所有常用汉字的Unicode值都可以用3字节的UTF8表示出来,而GBK编码的汉字基本是2字节(GB18030虽4字节但是日常没人会写那些字)。这也就导致了,如果把GBK编码的中文文本另存为UTF8编码,体积会大50%左右。这也是UTF8的一点小瑕疵,存储同样的汉字,体积比GBK要大50%。Latin1编码(又名ISO-8859-1编码),相信99%的人第一次听到Latin1都是在使用Mysql数据库的时候接触到的。Latin1是Mysql数据库表的默认编码方式。Latin1也是单字节编码方式,也就是说最多只能表示256个字母或符号,并且前128个和ASCII完全吻合。用Latin1存储中文有没有问题?答案是没有问题,但是并不建议。例如你把UTF8编码的“讯”字(UTF8编码为0xE8AEAF,占三个字节)存入了Latin1编码的Mysql表,那么在Mysql眼里,你存入的并不是一个“讯”字,而是三个Latin1的字母(0xE8,0xAE,0xAF)。本质上,你存的数据值依然是0xE8AEAF,这种“欺骗”Mysql的行为并没有导致数据丢失,只不过你需要注意读取出来该值的时候,自己要以UTF8编码的方式显示出来,要不然就是乱码。机器码:是电脑CPU直接读取运行的机器指令,运行速度最快,但是非常难懂,比较难编写,一般人接触不到。字节码:是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。
  

About Me:小婷儿

● 本文作者:小婷儿,专注于python、数据分析、数据挖掘、机器学习相关技术,也注重技术的运用

● 作者博客地址:https://blog.csdn.net/u010986753

● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

● 微信:tinghai87605025 联系我加微信群

● QQ:87605025

● QQ交流群py_data :483766429

● 公众号:python宝 或 DB宝

● 提供OCP、OCM和高可用最实用的技能培训

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

如果你觉得到文章对您有帮助,点击下方我的头像,赞赏我哦!

有您的支持,小麦粒一定会越来越好!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值