汉字的Unicode范围(转)

在网上搜索了一下汉字的Unicode范围,普遍给出了“U+4E00..U+9FA5”。但事实上这个范围是不完整的,甚至连基本的全角(中文)标点也未包含在内。根据最新的Unicode 5.0版整理如下:

注:在绝大多数应用场合中,我们可以仅用(1)、(2)、(3)、(4)、(5)的集合作为CJK判断的依据。

1)标准CJK文字

UCD Documentation File Replaced

Code
point range

Block
name

Release

U+3400..U+4DB5

CJK Unified
Ideographs Extension A

3.0

U+4E00..U+9FA5

CJK Unified
Ideographs

1.1

U+9FA6..U+9FBB

CJK Unified
Ideographs

4.1

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在单片机中,如果需要将Unicode编码换成中文,可以使用一些开源的库函数来实现。下面是一种可以在多种单片机平台上运行的实现方法。 首先,需要在C语言中定义一个包含所有中文字符的数组,例如GB2312编码的中文字库,可以使用如下代码: ```c const unsigned char gb_font[] = { // 从0xA1开始的中文字符,共有94个字符 // 每个字符占用16个字节,每个字节高位为0,低位为实际的字节值 // 根据GB2312编码,第一个字节的范围是0xA1-0xF7,第二个字节的范围是0xA1-0xFE // 因此,字库的大小为(0xF7-0xA1+1) * (0xFE-0xA1+1) * 16 = 67680个字节 // 这里只列出前面几个字的数据,具体数据可以参考字库文件 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 空格 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ! 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // " 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // # 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // $ // 其他字符的数据省略 }; ``` 接下来,可以使用Unicode编码字符数组来表示中文字符串,然后使用字库中对应的汉字来进行换。具体实现可以参考以下代码: ```c // 中文字符串 const unsigned short chinese_str[] = {0x4E2D, 0x6587, 0x5B57, 0x7B26}; // 将Unicode编码的中文字符换成GB2312编码的中文字符串 void unicode_to_chinese(unsigned short *unicode_str, char *chinese_str) { int i; for (i = 0; unicode_str[i] != 0; i++) { unsigned short ch = unicode_str[i]; // 在字库中查找对应的汉字 // 假设字库中每个汉字占用16个字节,字库地址为0x80000000 unsigned char *font = gb_font + (ch - 0xA1A1) * 16; // 将汉字换成GB2312编码 chinese_str[i * 2] = font[0]; chinese_str[i * 2 + 1] = font[1]; } chinese_str[i * 2] = '\0'; } int main(void) { char chinese_str[sizeof(chinese_str) * 2 + 1]; unicode_to_chinese(chinese_str, chinese_str); printf("中文字符串:%s\n", chinese_str); return 0; } ``` 需要注意的是,上述代码中的字库地址和字库格式等都需要根据具体情况进行调整。此外,如果使用其他单片机平台,可能需要使用其他库函数或者自己实现字库解析和编码换等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值