字符的编码方式 ASCII 、GBK 、UTF-8 、Unicode 、Unicode big endian
字符的编码方式很多种 ,我们常用到的是ASCII 、GBK 、UTF-8 、Unicode 、Unicode big endian等。
想查看的话,可以用记事本新建一个txt文档,里面输入字符或汉字,然后用UltraEdit打开,按
CTRL+h,即可查看字符的编码值。
对于英文字符,ASCII编码方式就可以全部表示,只需要0-127这128个编码值。所以ASCII编码值小于0x80,
常见的ASCII码值如:0表示NULL,10表示'\n'换行,0x61表示‘a'等。
对于汉字,大陆地区的简体中文使用的编码方式是GBK,意思是国标扩展码。
香港和台湾的繁体字使用是BIG5。
大陆地区默认情况下,你新建的txt文档存储方式是ANSI,表示英文字符存储为ASCII值,中文和标点符号
存储为GBK值。
为了使全世界所有的国家的任一字符都有一个独一无二的编码值,产生了Unicode码。任一字符的Unicode
值都是唯一的,但是可以有不同的存储方式。UTF-8 、Unicode 、Unicode big endian都是Unicode的一种
存储方式。
比如:"ab中国"’,在记事本里另存为Unicode编码,查看编码值为
FF FE 6100 62 00 63 2D 4E FD 56
FF FE 表示是Unicode编码,'a'的Unicode值为0x0061,和ASCII码值相同,只是表示位数不同。
Unicode编码方式默认是little endian 存放方式。
如果是编码方式选择为Unicode big endian,则存放为
FE FF 00 61 00 62 4E 2D 56 FD
起始两个字节FE FF表示大端方式,大端方式只是存放顺序发生改变,值并没有改变。
下面看看UTF-8编码值
EF BB BF 61 62 E4 B8 AD E5 9B BD
EF BB BF 表示UTF-8编码
E4 B8 AD表示‘中’,UTF-8编码值需要转化为Unicode编码值才能知道其表示的字符。
1110 0100 1011 1000 1010 1101
0100 1110 0010 1101
4 E 2 D
转换方式:第一个字节E4的从最高位开始,出现0之前的1的个数,表示有几个字节来表示。这个1110 0100
0之前有3个1,表示用三个字节来表示。后面的字节的高两位10都是头部,去掉,然后按从高到低顺序组合起
来就是Unicode值。
同一个字符的GBK的值和Unicode值是不同的,同样是上面几个字符,GBK编码方式存放值为:
61 62 D6 D0 B9 FA
'中’的GBK为0xD6D0,和Unicode码值0x4E2D不同。
以16*16汉字库为例,有区号和位号,每个区有94个位,D6对应区号,D0对应位号。假设一个汉字库的内存
映射起始位置为HZKmem,区号area=0xD6-0xA1,位号where=0xD0-0xA1,16*16点阵每一个汉字需要32个
字节表示,那么 ‘中’ 的点阵信息起始位置Buffer,从Buffer开始的32个字节表示了 '中',前两个字节显示为
第一行,依次类推。
Buffer=HZKmem+((0xD6-0xA1)*94+(0xD0-0xA1))*32
在文字显示的时候,如果是点阵显示,一般我们需要取出其ASCII码值和GBK编码值,然后英文到ASCII对应的
点阵取出。汉字的话根据GBK编码值到汉字点阵库中索引出点阵信息。英文字符和中文字符的判断可以通过
编码值来判断,英文字符编码值小于0x80,GBK编码值的第一个字节的最高位为1,所以第一个字节大于等于
0x80。
如果要显示矢量字体,字体大小可任意调整,可以显示不同的字体(楷书、隶书等),则需要用Unicode编码值
索引。
GBK值不可直接索引FreeType矢量字体,如果要想显示成矢量字体的话,需要建立GBK和Unicode之间的对应,
然后再索引。
字符的编码方式 ASCII 、GBK 、UTF-8 、Unicode 、Unicode big endian相关推荐
- unicode字符显示方框_【硬核】韦东山:字符的编码方式
自从上次发布"Framebuffer应用编程"视频后, 我们花了10多天调试STM32MP157板子,4.19内核.5.4内核全部调试通过! 在调试过程中,编写了不少文档,到时整理 ...
- 编码方式 / ASCII、UNICODE、UTF-8、ANSI
一.ASCII 全称:American Standard Code for Information Interchange. 占用 1 个字节. 共可以表示 128 个字符,因为最前面那一位始终为 0 ...
- 漫画:什么是字符集和编码?ASCII、UTF-8、UTF-16、UTF-32 又是什么?
当天下午 -------- 在计算机底层,比如说你的名字"小萌"在计算机中并不是文字的形式,而是一串二进制数字,如"011001100110-" 人类只认识文字 ...
- HTTP 头部的编码方式——ASCII编码
先说结果,http请求行.响应行的编码方式都为ASCII,这也是为什么需要对url进行url编码,将非ASCII字符转为ASCII字符. 我们知道在HTTP头部中传入的信息不会被url encode, ...
- iOS 中的编码方式详解(主要讲解Unicode)
当你在处理文本时,如果你不是在写一些非常古老的代码(legacy code),那么你一定要使用 Unicode.幸运的是,苹果和 NeXT 一直致力于推动 Unicode 标准的建立,而 NeXT 在 ...
- 字符集:ASCII、GB2312、GBK、GB18030、Unicode
文章目录 1 字符集.代码点.编码的概念 2 字符集发展的脉络 2.1 最早是ASCII 2.2 各个国家后续推出的编码表 2.3 ANSI到底是什么编码 3 ASCII 3.1 ASCII字符集简介 ...
- 字符集、字符编码、国际化、本地化简要总结(UNICODE/UTF/ASCII/GB2312/GBK/GB18030)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明 普通的linux 和 普通的windows. ...
- 字符集和编码规范:ASCII,Unicode和UTF-8, latin1,BIG5,GBK
字符集和编码方式:ASCII,Unicode和UTF-8, latin1,BIG5,GBK 参考: 字符集 字符集编码详解 一. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制 ...
- 常见的字符编码(ASCII码,unicode,utf-8,gbk)
常见单位换算 bit 位 计算机的最小表示单位(0,1) bytes 字节 计算机最小的存储单位,缩写B 1 B = 8 bit 1 KB = 1024 B 1 MB = 1024 KB 1 GB = ...
最新文章
- l2-22(重排链表)
- 五分钟体验分布式事务框架Seata
- 2015级C++第10、11周程序阅读(补充) 继承和派生
- 用keil仿真程序,出现 EVALUATION MODE Running with Code Size Limit:2K
- csapp:无符号数可能造成的程序bug
- 使命召唤手游迎来欧阳娜娜,这阵容够豪华,玩家期待吗?
- ORACLE中的MERGE语法使用记录
- CodeForces - 1509C The Sports Festival(dp)
- 使用cloudera manager安装Hue服务【详细步骤】
- STL泛型编程之迭代器
- 793. 阶乘函数后K个零 golang
- Matlab R2010a 32bit 绿色免安装版
- JSP设置IE版本兼容
- sqlserver200864位下载_sql server 2008 r2 32位下载-sql server 2008 r2 3264位 中文版 - 河东下载站...
- 【论文阅读】Hierarchical Reinforcement Learning for Air-to-Air Combat 基于分层强化学习的空战决策
- 计算机教师计算机网络面试题,初中信息技术教师资格面试真题及答案:IP地址...
- 一步一步教你写股票走势图——分时图三(对齐图表、自定义高亮)
- 电路交换与分组交换的区别
- itools电脑显示服务器维护,win10系统iTools无法打开且服务无法启动的具体技巧
- 当公路的规则与秩序,被昇腾AI时刻守护