硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5171|回复: 1
收起左侧

[emWin] emWin的字体软件FontCvt生成的字体是Unicode编码,为什么不直接使用Unicode编码,而使用UTF-8

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115717
QQ
发表于 2016-8-26 01:31:33 | 显示全部楼层 |阅读模式
初学者容易有这样的疑问,直接使用用unicode不是更加方便么,为什么emWin使用的时候还有多一次转换,即我们操
作的时候是用的UTF-8编码字体,emWin的库函数会将这个编码再转换成unicode编码,然后从uncode编码的字符集中
获取相应的点阵数据。
============================================
Unicode编码
      由于各个国家都像中国这样搞出一套自己的编码标准,结果互相之间谁也不懂谁的编码,谁也不支持别人的编码
基于此,国际组织决定着手解决这个问题,即重新弄一套包括了地球上所有文化、所有字母和符号的编码。他们打算
叫它"UniversalMultiple-Octet Coded Character Set“(通用多八位编码字符集),简称 UCS, 俗称"UNICODE"。
Unicode有两种编码UCS-2和UCS-4。UCS-2用两个字节编码,UCS-4用4个字节编码。

UTF-8编码
     事实证明,对可以用ASCⅡ表示的字符使用UNICODE并不高效,因为UNICODE比ASCⅡ占用大一倍的空间,而对
ASCⅡ来说高字节的0对他毫无用处。为了解决这个问题,就出现了一些中间格式的字符集,他们被称为通用转换格式,
即UTF(Universal Transformation Format)。目前存在的UTF格式有:UTF-7,UTF-7.5,UTF-8,UTF-16,以及 UTF-32。
============================================
那么问题来了,emWin中为什么不直接使用Unicode编码,而要使用一种转换形式。
1.  我个人认为,这个是最主要的原因,MDK和IAR的编辑器都不支持Unicode编码,仅支持UTF-8。
2.  UTF-8编码相对于unicode编码的优势。
(1)UTF-8表示与ASCII字符表示是一样的,只占一个字节,解决了Unicode浪费空间的情况。
(2)与CPU字节顺序无关, 可以在不同平台之间交流。
(3)容错能力高, 任何一个字节损坏后, 最多只会导致一个编码码位损失, 不会链锁错误(如GB码错一个字节就会整行乱码)。

回复

使用道具 举报

2

主题

19

回帖

2

积分

新手上路

积分
2
发表于 2016-8-30 17:05:21 | 显示全部楼层
[s:141] [s:151]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-14 07:28 , Processed in 0.260598 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表