总结:Unicode字符可以通过编码可以得到UTF-8和GBK,相反UTF-8和GBK也可以通过解码得到Unicode,但GBK和UTF-8之间无法直接转换,只能转换到Unicode后再转到另一编码 。其实所谓编码转换是数值与字符的转换 。
URL编码 /解码URL编码就是一个字符ascii码的十六进制 。不过稍微有些变动,需要在前面加上"%" 。比如"",它的ascii码是92,92的十六进制是5c,所以""的URL编码就是%5c 。那么汉字的URL编码呢?很简单,非ASCII字符的编码一般有两种,是以GBK或UTF8进行编码 。例如:"迷" 对应的UTF-8编码\xe8\xbf\xb7,则"胡"的URL编码是%E8%BF%B7 。解码方法是去掉%,之后再进行UTF-8解码,就可以得到实际的字符了 。
计算机是以什么编码存储和传输数据的呢?支持Unicode的应用程序(python、VS、VC、google Chrome、notepad等大多数程序都支持(部分程序需要设置编码) 。
不支持Unicode的应用程序(易语言等)则会以控制面板—区域—管理中设置的编码(ANSI)进行存储,例如:简体中文(GBK)、繁体中文(Big5)等 。
例如:以国产编程语言‘易语言’为例,看一下变量在内存中是以什么编码存储的
a = "你"调试输出 (取指针地址_文本型 (a))* 1966420通过CE查看此内存地址中对应的值为0000E3C4,而"你"的GBK编码正好为:E3C4 。由此得知,易语言软件是以GBK编码进行数据存储和传输的 。
再看看数据在内存中如何存储:
· 使用OD查看
文章插图
· 使用CE查看
文章插图
多字符变量"你好啊"的GBK字符:c4e3bac3b0a1
OD:
文章插图
CE(8字节显示):
文章插图
由此可以看出,内存的存储编码方式与软件支持的编码方式是一致的(易语言:GBK字符;python:Unicode字符);计算机内存数据存储一般采用大端模式(内存高位对数据低位,内存低位对数据高位)。OD默认是从内存低位到高位显示数据,CE默认是从内存高位到低位显示数据,所以看到的十六进制数值是相反的 。存储占用的内存大小,会根据变量的数据类型申请对应大小的内存来存储 。
推荐阅读
- 电脑的几个基本常识
- 阿里P7架构师浅析:如何优化Java程序设计、编码提高性能
- 蓝牙音频编码哪个音质好?今天我们来逐一解读
- 并使用java实现 一文彻底看懂Base64编码解码原理
- 二进制世界的秘密
- 计算机体系基础
- MySQL数据库锁理论
- 计算机基础必考知识 计算机基础试卷
- 浅谈计算机中的hosts文件
- 计算机语言介绍:机器语言、汇编语言、高级语言