了解中文(英文)字库的分布,如何从一个汉字的内码得出其字库

1.以前的字符显示都是英文的,占一个字节。比如‘1’,对应的ASCI是0x31,表示处理器将‘1’解释成0x31.

如 case asci_data[5]={"1,a"}; 这时:asci_data[0]=0x31,asci_data[1]=0x61;对应关系可以从ASCII表中取得。

2.中文显示,却需要两个字节。在有些编译器中经常出现这种情况。输入一个汉字,然后按Backspace,却好像只删除了一半,还有一点没删除,显示了一个古怪的字符。就是应为一个中文表示要两个字节,而按删除只是删除了一个字节。

这两个字节就是内码,就是操作系统依据某个标准将该汉字解释为一个固定的代码。不同操作系统的标准不一样。

如windows好像使用GBK,GB2312,GB18030(这三个都差不多),而LINUX 使用unicode。

所以如果这么写:case chinese_characters[10]={"上"};对于chinese_characters[0],chinese_characters[1]在windows和LINUX中代表的值是不同的。

3.字库一般使用一定的格式表示某个字(汉字,或英文).常见的有8*8,16*8,16*16.等等。

如16*8表示一个字用16行,每行8个bit表示。一共需要16*8个bit,共16个字节。

如16*16表示一个字用16行,每行16个bit表示,一共需要16*16个bit,共32个字节。

例如下图中显示的“上”字,使用16×16点阵。字模中每一点使用一个二进制位(Bit)表示,如果是1,则说明此处有点,若是0,则说明没有。这样,一个16×16点阵的汉字总共需要16*16/8=32个字节表示。字模的表示顺序为:先从左到右,再从上到下,也就是先画左上方的8个点,再是右上方的8个点,然后是第二行左边8个点,右边8个点,依此类推,画满16×16个点。

如图:“上”,16*16表示

图示:

3.英文字库比较好解释。通常采用ASCI库,使用前128个字符。如‘1’对应的ASCII是0x31,那么在ASCI位置就是0x31*一个字符的大小。

4.中文字库就比较麻烦了。先取得汉字的内码,如使用GBK,‘上’的内码是0xc9,0xcf。在查到在对应字库中位置。取得该汉字的字库。

一般字库文件是按照GB 2312-80标准,也就是通常所说的国标码或区位码的标准排列的。国标码分为 94 个区(Section),每个区 94 个位(Position),所以也称为区位码。其中01~09 区为符号、数字区,16~87 区为汉字区。而 10~15 区、88~94 区是空白区域。 如何取得汉字的区位码呢?在计算机处理汉字和ASCII字符时,使每个ASCII字符占用1个字节,而一个汉字占用两个字节,其值称为汉字的内码。其中第一个字节的值为区号加上32(20H),第二个字节的值为位号加上32(20H)。为了与ASCII字符区别开,表示汉字的两个字节的最高位都是1,也就是两个字节的值都又加上了128(80H)。这样,通过汉字的内码,就可以计算出汉字的区位码。 具体算式如下: qh=c1-32-128=c1-160 wh=c2-32-128=c2-160 或 qh=c1-0xa0 wh=c2-0xa0 qh,wh为汉字的区号和位号,c1,c2为汉字的第一字节和第二字节。 根据区号和位号可以得到汉字字模在文件中的位置: location=(94*(qh-1)+(wh-1))*一个点阵字模的字节数。

5.其实中文字库中也有英文,不过该英文内码占用的2个字节,而不是一个字节。

了解中文(英文)字库的分布,如何从一个汉字的内码得出其字库相关推荐

  1. mysql中文占几个char_数据库中一个汉字占几个字符?

    展开全部 如果你说的"字符"就是指 Java 中的 char,那好,那它就是 16 位,2 字节.e69da5e887aa32313133353236313431303231363 ...

  2. mysql外码内码定义_中文编码杂谈(转) - CodeAxe的个人页面 - OSCHINA - 中文开源技术交流社区...

    编码问题的例子 在windows自带的notepad(记事本)程序中输入"联通"两个字,保存后再次打开,会发现"联通"不见了,代之以"��ͨ" ...

  3. 一个汉字=2个英文字符么?我肤浅的这么认为。- -

    如题包含2个意思: 通常所说的一个汉字2个字节,一个英文字符1个字节. 一个汉字的显示宽度等于两个英文字符的显示宽度. 一.编码问题 这在正常编码里是这样的,所谓正常编码也就是ANSI,我们用NOTE ...

  4. python(40):利用utf-8编码判断中文英文字符

    #!/usr/bin/env Python # -*- coding:GBK -*- """汉字处理的工具: 判断unicode是否是汉字,数字,英文,或者其他字符. 全 ...

  5. css英文左右对齐,中文英文左右padding一致两端对齐实现_js

    先看下图: 就是一个定宽的容器,左右padding值20像素,结果输入一段文字后(有中文也有英文字符),会发现右侧根本就不对齐,有些地方距离右侧的空白大小也不是20像素,感觉不和谐,设计师就希望排列能 ...

  6. win8中文_免费文字转语音软件,支持男女中文英文混读,且用且珍惜!!

    软件下载 [名称]:文字转语音 [语言]:简体中文 [安装环境]:Win7/Win8/Win10 [下载链接]: 链接: https://pan.baidu.com/s/1ooXI-zjujdHlOf ...

  7. HTML5印章绘制电子签章图片,中文英文椭圆章、中文英文椭圆印章

    HTML5印章绘制电子签章图片,中文英文椭圆章.中文英文椭圆印章 原文:HTML5印章绘制电子签章图片,中文英文椭圆章.中文英文椭圆印章 电子签章图片采集 印章图片的采集两种互补方式: 方式1:在线生 ...

  8. mac机c4d更改语言,Win/Mac版:C4D R18 三维软件 Cinema 4D C4D R18 正式完整版 + 中文/英文注册机版...

    [软件介绍] 大家期待的新版 CINEMA 4D R18 三维软件正式版终于面世了, 加入了很多新功能,其他功能也得到了逐步改进,Cinema 4D Release 18为运动图形艺术家推出全新强大的 ...

  9. 中文/英文]VC6 sp6补丁下载|VS6 sp6补丁下载

    中文/英文]VC6 sp6补丁下载|VS6 sp6补丁下载 [防VC6卡死]   Post By:2008-9-10 18:20:00 转自孙鑫论坛 初学VC的人最容易遇到的问题,就是VC6在编译的时 ...

最新文章

  1. HDU 1811 Rank of Tetris(并查集按秩合并+拓扑排序)
  2. python polygon函数_Python 人脸识别就多简单,看这个就够了!
  3. 细节满满!理解对比学习和SimCSE,就看这6个知识点
  4. linux 命令如何输入,Linux 命令行输入
  5. MySQL48道经典基础面试题(包含各个方面)
  6. 基于ARM-LINUX的温度传感器驱动-DS18B20
  7. 在endnote中制作GB/T7714《文后参考文献著录规则》的输出格式
  8. onload事件_图像onLoad事件+ Internet ExplorerJavaScript问题
  9. bios sgx需要开启吗_惠普HP笔记本预装win8改装成win7系统BIOS设置与安装方法
  10. 代码写的太烂了,所以我干不下去了
  11. 什么是互联网运营?运营小白应该了解的理论基础
  12. 电商平台的开发需要注意的问题有哪些?
  13. 区块链的硬分叉和软分叉
  14. 期货现货升跌水(期货下跌现货一定下跌吗)
  15. OpenNI的安装与开发环境配置
  16. HTTPS原理解析-转
  17. 程序员的自我修养—链接、装载与库 笔记
  18. Ajax、JSON数据和文件上传与下载
  19. 【hadoop】Archive命令使用
  20. 抽烟行为识别预警系统 yolov5

热门文章

  1. css3 中@font-face 一个css文件可以定义多种字体
  2. ACM/ICPC 金牌进阶之路
  3. JavaWeb之JSP原理
  4. Chrome Explorer 360极速浏览器 Firefox
  5. QQ空间蓝色字体,点击跳转到加好友页面方法分享
  6. 汽车零部件企业工厂数字化改造5大核心价值
  7. WS-DAN论文解读
  8. Kaggle竞赛介绍: Home Credit default risk(一)
  9. 库乐队历史版本怎么下载_苹果库乐队下载-库乐队app最新版下载V2.3.2-西西软件下载...
  10. 21英里法则_一英里的跑道将带您到任何地方