字符的编码方式很多种 ,我们常用到的是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相关推荐

  1. unicode字符显示方框_【硬核】韦东山:字符的编码方式

    自从上次发布"Framebuffer应用编程"视频后, 我们花了10多天调试STM32MP157板子,4.19内核.5.4内核全部调试通过! 在调试过程中,编写了不少文档,到时整理 ...

  2. 编码方式 / ASCII、UNICODE、UTF-8、ANSI

    一.ASCII 全称:American Standard Code for Information Interchange. 占用 1 个字节. 共可以表示 128 个字符,因为最前面那一位始终为 0 ...

  3. 漫画:什么是字符集和编码?ASCII、UTF-8、UTF-16、UTF-32 又是什么?

    当天下午 -------- 在计算机底层,比如说你的名字"小萌"在计算机中并不是文字的形式,而是一串二进制数字,如"011001100110-" 人类只认识文字 ...

  4. HTTP 头部的编码方式——ASCII编码

    先说结果,http请求行.响应行的编码方式都为ASCII,这也是为什么需要对url进行url编码,将非ASCII字符转为ASCII字符. 我们知道在HTTP头部中传入的信息不会被url encode, ...

  5. iOS 中的编码方式详解(主要讲解Unicode)

    当你在处理文本时,如果你不是在写一些非常古老的代码(legacy code),那么你一定要使用 Unicode.幸运的是,苹果和 NeXT 一直致力于推动 Unicode 标准的建立,而 NeXT 在 ...

  6. 字符集:ASCII、GB2312、GBK、GB18030、Unicode

    文章目录 1 字符集.代码点.编码的概念 2 字符集发展的脉络 2.1 最早是ASCII 2.2 各个国家后续推出的编码表 2.3 ANSI到底是什么编码 3 ASCII 3.1 ASCII字符集简介 ...

  7. 字符集、字符编码、国际化、本地化简要总结(UNICODE/UTF/ASCII/GB2312/GBK/GB18030)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明   普通的linux 和 普通的windows.    ...

  8. 字符集和编码规范:ASCII,Unicode和UTF-8, latin1,BIG5,GBK

    字符集和编码方式:ASCII,Unicode和UTF-8, latin1,BIG5,GBK 参考: 字符集 字符集编码详解 一. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制 ...

  9. 常见的字符编码(ASCII码,unicode,utf-8,gbk)

    常见单位换算 bit 位 计算机的最小表示单位(0,1) bytes 字节 计算机最小的存储单位,缩写B 1 B = 8 bit 1 KB = 1024 B 1 MB = 1024 KB 1 GB = ...

最新文章

  1. l2-22(重排链表)
  2. 五分钟体验分布式事务框架Seata
  3. 2015级C++第10、11周程序阅读(补充) 继承和派生
  4. 用keil仿真程序,出现 EVALUATION MODE Running with Code Size Limit:2K
  5. csapp:无符号数可能造成的程序bug
  6. 使命召唤手游迎来欧阳娜娜,这阵容够豪华,玩家期待吗?
  7. ORACLE中的MERGE语法使用记录
  8. CodeForces - 1509C The Sports Festival(dp)
  9. 使用cloudera manager安装Hue服务【详细步骤】
  10. STL泛型编程之迭代器
  11. 793. 阶乘函数后K个零 golang
  12. Matlab R2010a 32bit 绿色免安装版
  13. JSP设置IE版本兼容
  14. sqlserver200864位下载_sql server 2008 r2 32位下载-sql server 2008 r2 3264位 中文版 - 河东下载站...
  15. 【论文阅读】Hierarchical Reinforcement Learning for Air-to-Air Combat 基于分层强化学习的空战决策
  16. 计算机教师计算机网络面试题,初中信息技术教师资格面试真题及答案:IP地址...
  17. 一步一步教你写股票走势图——分时图三(对齐图表、自定义高亮)
  18. 电路交换与分组交换的区别
  19. itools电脑显示服务器维护,win10系统iTools无法打开且服务无法启动的具体技巧
  20. 当公路的规则与秩序,被昇腾AI时刻守护

热门文章

  1. phpcms v9网站搬家更换域名的方法
  2. 王者荣耀java_王者荣耀版Java教程第四期:数组来了
  3. 苹果怎么关闭自动亮度_自动续费服务该怎么关闭?
  4. 如何删除word中多余的空格和空行
  5. HTML5的placeHolder在IE9下workaround引发的Bug(按下葫芦起了瓢)
  6. CSS文字环绕图片,图片在左下角
  7. JavaScript严格模式及其使用
  8. Java 在Word中合并单元格时删除重复值
  9. EasyDL之图片分类API接口实现-基于python语言
  10. QQ微信内防红对接文档