[ python ] 字符编码
字符编码
这里主要描述以下三种编码方式:
(1)ASCII
(2)unicode
(3)uft-8
(4)gbk
ASCII 码
在计算机内部,所有的信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此 8 个 二进制位就可以组合成 256 种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示 256种不同的状态,每一个状态对应一个符号,就是 256 个符号,从 00000000 到 11111111
美国定制了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为 ASCII 码,一直沿用至今。
一个字符用 1 个字节表示 1 byte = 8 bit
ASCII 码只包含字母和英文中的特殊符号,不包括汉字;
unicode (万国码)
世界上存在很多种不同的编码,同一个二进制数字可以被解释成不同的符号。因此,想要打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式打开就会出现乱码。如果有一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是 unicode 万国码的由来,这是一种所有符号的编码。
字母:
一个字母等于 4 个 byte = 32 bit
汉字:
一个字母等于 4 个 byte = 32 bit
1. unicode 的问题
需要注意的是, unicode 只是一个字符集,它规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。
(1)如何才能区分 unicode 和 ASCII ? 计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?
(2)英文在 ASCII 码中,只需要一个字节表示就够了,如果采用 unicode 统一规定,每个符号用三个或四个字符表示,这对于存储来说是极大的浪费,文本文件的大小胡因此大出二三倍。
UTF-8
互联网的普及,强烈要求出现一种统一的编码方式。utf-8 就是在互联网上使用最广的一种 unicode 的实现方式。
字母:
一个字母等于 2 byte = 8 bit
汉字:
一个中文等于 3 byte = 24 bit
GBK
包含全部中文字符,utf-8则包含全世界所有国家需要用到的字符;
字母:
一个字母 1 byte = 8 bit
汉字:
一个汉字 2 byte = 16 bit
=、==、is 三者的使用说明
1. = 赋值
例子:
1 2 | s1 = 'hkey' s2 = 'xiaofei' |
2. == 比较值是否相等
1 2 3 4 | print ( 1 = = 2 ) # 执行结果: # False |
3. is 比较内存地址
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | s1 = 6 s2 = 6 print (s1 is s2) # 执行结果: # True s11 = 'adfadsasdfasdff' s22 = 'adfadsasdfasdff1' print (s11 is s22) # 执行结果: # False |
本文作者:hukey
本文链接:https://www.cnblogs.com/hukey/p/9647291.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 手把手教你更优雅的享受 DeepSeek
· 腾讯元宝接入 DeepSeek R1 模型,支持深度思考 + 联网搜索,好用不卡机!
· AI工具推荐:领先的开源 AI 代码助手——Continue
· 探秘Transformer系列之(2)---总体架构
· V-Control:一个基于 .NET MAUI 的开箱即用的UI组件库