HZK16汉字16*16点阵字库的使用及示例程序

陪她去流浪 桃子 编辑 阅读次数:64435

最近在弄硬件,买了一块彩屏,需要字库,所以就把很久以前会的知识拿出来温习了一遍,果然好多都记忆模糊了。

网上的很多代码我看过,很多都有问题,这里我帖出来的是我自己写的代码,应该没有问题。

原理

HZK16字库是符合GB2312国家标准的16×16点阵字库,HZK16的GB2312-80支持的汉字有6763个,符号682个。 其中一级汉字有 3755个,按声序排列,二级汉字有3008个,按偏旁部首排列。

我们在一些应用场合根本用不到这么多汉字字模,所以在应用时就可以只提取部分字体作为己用。 HZK16字库里的16×16汉字一共需要256个点来显示,也就是说需要32个字节才能达到显示一个普通汉字的目的。

我们知道一个GB2312汉字是由两个字节编码的,范围为0xA1A1~0xFEFEA1-A9为符号区,B0-F7为汉字区。 每一个区有94个字符(注意:这只是编码的许可范围,不一定都有字型对应,比如符号区就有很多编码空白区域)。

下面以汉字「我」为例,介绍如何在HZK16文件中找到它对应的32个字节的字模数据。

前面说到一个汉字占两个字节,这两个中前一个字节为该汉字的区号,后一个字节为该字的位号。 其中,每个区记录94个汉字,位号为该字在该区中的位置。所以要找到「我」在hzk16库中的位置就必须得到它的区码和位码。

  • 区码:汉字的第一个字节-0xA0,因为汉字编码是从0xA0区开始的,所以文件最前面就是从0xA0区开始,要算出相对区码
  • 位码:汉字的第二个字节-0xA0

这样我们就可以得到汉字在HZK16中的绝对偏移位置:offset = (94*(区码-1)+(位码-1))*32

注解:

  • 区码减1是因为数组是以0为开始而区号位号是以1为开始的
  • (94*(区号-1)+位号-1)是一个汉字字模占用的字节数
  • 最后乘以32是因为汉字库文应从该位置起的32字节信息记录该字的字模信息(前面提到一个汉字要有32个字节显示)

图示

我画的图示:

●●●●●●●●●●●●●●   →   0x04,0x80
●●●●●●●●●   →   0x0E,0xA0
●●●●●●●●●   →   0x78,0x90
●●●●●●●●●●●●●   →   0x08,0x90
●●●●●●●●●●●●●   →   0x08,0x84
   →   0xFF,0xFE
●●●●●●●●●●●●●●   →   0x08,0x80
●●●●●●●●●●●●●   →   0x08,0x90
●●●●●●●●●●   →   0x0A,0x90
●●●●●●●●●●●●   →   0x0C,0x60
●●●●●●●●●●●●●   →   0x18,0x40
●●●●●●●●   →   0x68,0xA0
●●●●●●●●●●●●●   →   0x09,0x20
●●●●●●●●●●   →   0x0A,0x14
●●●●●●●●●●   →   0x28,0x14
●●●●●●●●●●●●●   →   0x10,0x0C

所以,「我」在HZK16 16*16点阵字库的存放的序列为: (一行一行地保存,共16行,每行2个字节, 共32个字节)

04 80 0E A0 78 90 08 90 08 84 FF FE 08 80 08 90
0A 90 0C 60 18 40 68 A0 09 20 0A 14 28 14 10 0C

就像下面这样:

1.jpg

以下是我自己写的示例程序, 可以自己修改成其它的数据格式.(很简单, 所以没写注释)。

关于汉字编码问题

注意:作者当时写这段代码时的环境是 Windows 平台。Windows下从控制台输入的汉字默认是 cp936 代码页编码,此代码页编码出的汉字正好就是 GB2312 编码。

但是,如果是在类Linux环境下编译使用,则得不到正确的结果。因为类Linux系统默认编码是UTF-8。UTF-8编码的汉字是3个字节,和GB2312的2个字节并不一样。

所以,需要先将UTF-8编码转换成 cp936 编码,然后才能正确地索引字库中的汉字。

比如,现在有一个a.txt文件,内容是(换行符\n(0x0A))请忽略。

$ cat a.txt
我
$ hexdump -C a.txt
00000000  e6 88 91 0a                                       |....|
00000004

可以知道,的UTF-8编码为:0xE6 0x88 0x91

然后,用 iconv 转码:

$ iconv -f utf-8 -t cp936 a.txt > b.txt

可以得到 GB2312/cp936 编码的中文:

$ hexdump -C b.txt
00000000  ce d2 0a                                          |...|
00000003

即,然后用0xCE 0xD2替换掉版本3中的word数组的值即可。

示例源代码

注:此代码由于编码问题,仅能在 Windows 上正确运行。如要在类Linux平台运行,请先转码。 版本1和版本2只能在Windows上正确运行,版本3能在Linux/Unix/macOS运行。

版本1

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h>

int main(void)
{
    FILE* fphzk = NULL;
    int i, j, k, offset;
    int flag;
    unsigned char buffer[32];
    unsigned char word[3] = "我";
    unsigned char key[8] = {
        0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01
    };

    fphzk = fopen("hzk16", "rb");
    if(fphzk == NULL){
        fprintf(stderr, "error hzk16\n");
        return 1;
    }
    offset = (94*(unsigned int)(word[0]-0xa0-1)+(word[1]-0xa0-1))*32;
    fseek(fphzk, offset, SEEK_SET);
    fread(buffer, 1, 32, fphzk);
    for(k=0; k<32; k++){
        printf("%02X ", buffer[k]);
    }
    for(k=0; k<16; k++){
        for(j=0; j<2; j++){
            for(i=0; i<8; i++){
                flag = buffer[k*2+j]&key[i];
                printf("%s", flag?"●":"○");
            }
        }
        printf("\n");
    }
    fclose(fphzk);
    fphzk = NULL;
    return 0;
}

版本2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    FILE* fphzk = NULL;
    int i, j, k, offset;
    int flag;
    unsigned char buffer[32];
    unsigned char word[5];
    unsigned char key[8] = {
        0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01
    };
    fphzk = fopen("hzk16", "rb");
    if(fphzk == NULL){
        fprintf(stderr, "error hzk16\n");
        return 1;
    }
    while(1){
        printf("输入要生成字模的汉字(多个):");
        for(;;){
            fgets((char*)word, 3, stdin);
            if(*word == '\n') 
                break;
            offset = (94*(unsigned int)(word[0]-0xa0-1)+(word[1]-0xa0-1))*32;
            fseek(fphzk, offset, SEEK_SET);
            fread(buffer, 1, 32, fphzk);
            for(k=0; k<16; k++){
                for(j=0; j<2; j++){
                    for(i=0; i<8; i++){
                        flag = buffer[k*2+j]&key[i];
                        printf("%s", flag?"●":"○");
                    }
                }
                printf("\n");
            }
            printf("uchar code key[32] = {");
            for(k=0; k<31; k++){
                printf("0x%02X,", buffer[k]);
            }
            printf("0x%02X};\n", buffer[31]);
            printf("\n");
        }
    }
    fclose(fphzk);
    fphzk = NULL;
    return 0;
}

版本3

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    FILE* fphzk = NULL;
    int i, j, k, offset;
    int flag;
    unsigned char buffer[32];
    unsigned char word[2] = {0xCE, 0xD2}; // 改成你的转码后的汉字编码
    unsigned char key[8] = { 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01 };
    fphzk = fopen("hzk16", "rb");
    if(fphzk == NULL){
        fprintf(stderr, "error hzk16\n");
        return 1;
    }

    offset = (94*(unsigned int)(word[0]-0xa0-1)+(word[1]-0xa0-1))*32;
    fseek(fphzk, offset, SEEK_SET);
    fread(buffer, 1, 32, fphzk);
    for(k=0; k<16; k++){
        for(j=0; j<2; j++){
            for(i=0; i<8; i++){
                flag = buffer[k*2+j]&key[i];
                printf("%s", flag?"●":"○");
            }
        }
        printf("\n");
    }

    for(k=0; k<31; k++){
        printf("0x%02X,", buffer[k]);
    }

    printf("\n");

    fclose(fphzk);
    fphzk = NULL;
    return 0;
}

相关资源

程序及源代码下载:mod.7z

各种字库下载地址:http://pan.baidu.com/share/link?shareid=2514580636&uk=320828865

标签:字库 · 单片机 · 嵌入式

文章评论 123 发表评论 登出
  1. 陈俊玮

    感谢博主分享

    1. 桃子

      不客气~

    2. northtzzz

      博主您好,您制作的字库文件是以横向进行16进制数据的存放,但是OLED显示汉字取模是使用列行式进行打点,请问如果我想将这两种不同的打点方式连接起来应该怎么做呢

      1. 桃子

        读取出来之后把数组横竖转换一下就行了呀。

        1. chain

          这个怎么操作啊

      2. sci

        请问字库文件要放在哪里呢

        1. 桃子

          fopen 这里用的是相对路径,也就是程序运行的“当前目录”。

          如果你不知道的话,可以把这里改成绝对路径。

        2. jieyang

          博主大大,问一下,这个汉字库有版权问题吗

          1. 桃子

            这就不太清楚了,我当时也是在网上整理并收集的,不知道版权属于谁的。 放在我网站上快十年了,似乎还没有人告我😆

          2. ssy

            博主大大你好,请问怎么修改输出点阵的字体呢?qwq

            1. 桃子

              点阵字体保存的是各个点的信息,按理说不存在字体这种说法。 当然,既然已经拿到了点的信息,你随便“变个形”啥的也不是不可以,😆

              1. ssy

                哦哦好的谢谢您~

            2. 顽笑

              博主大大你好,为什么我下载不了了呢,好像过期了,呜呜呜

              1. 桃子

                我试了在电脑💻上是可以打开分享页面的哦,手机上似乎不行。 (没想到百度最近整治不限速问题把链接搞坏了。) 你用电脑试一下,不行我再另行保存。

              2. cc

                博主大大,请问为什么我的代码运行出来显示的是error hzk16,我的字库也放在了根目录下,救救孩子吧

                1. 桃子

                  这个错误是没有找到 hzk16 文件。文件应该放在程序的工作目录下,或者你改成完整的绝对路径。

                  1. cc

                    我解决了,谢谢博主!!!

                    1. 桃子

                      You're welcome. 😏

                2. 一只小萌新

                  楼主你好 我最近刚刚学C语言 我想请教一下 如何输出设定好的一行字而非单个字 自己试了好多想法 还是不会改写

                  1. 桃子

                    版本3里面有个 word[2],这里只能放得下一个汉字,你改大点,然后循环取这个数组里面的汉字就好啦。

                  2. 不懂就要问!

                    谢谢作者,非常厉害和一篇文章! 但我能请教一下,版本一中的28行:flag=buffer[k*2+j]&key[i]; 作用是什么吗?能讲一下其中的原理吗?谢谢啦.

                    1. 桃子

                      你大概不知道“位操作”?

                      key 里面的每一个值(2 的指数)用来测试 buffer 的元素是否设置了某一位,设置了就输出实心的,没设置就输出空心的。

                      1. 不懂就要问!

                        我之前确实不知道“位操作”现在明白了,受益匪浅,谢谢! (一点打赏,表示谢意)

                        1. 桃子

                          谢谢谢谢,巨款已收到~😂

                    2. 哈哈哈饿饿饿

                      楼主你好,我用visual c++运行不了你这个代码,字库已经放到桌面了,是什么问题呢

                      1. 应该放在VS创建的项目文件夹下面,放桌面没有用啊

                        1. 桃子

                          放在进程的“当前目录”即可。我以为这是大家都知道的概念。😂

                      2. kk

                        我用devc++为什么打不开汉字库的呢?是要把存汉字库的文件夹改成什么名字吗?初学者看到书上有介绍汉字库挺感兴趣。。。

                        1. 桃子

                          路径没写对?

                        2. 夏天

                          博主,你好。根据您的程序,我们在Linux下使用UTF-8转成Unicode,然后转到GBK可以正常显示。但是显示的底框是黑色,字是白色,请问怎么能生成白底框,黑字呢?

                          1. 桃子

                            你把 printf("%s", flag?"●":"○"); 这一行的两个圈圈交换一下就好啦。

                            1. 夏天

                              谢谢博主,已解决。

                          2. 迷途小书童

                            问下大佬字库里的英文怎么打印

                            1. 迷途小书童

                              已经解决了

                              1. 迷途小书童

                                大家可能也会遇到,方法如下: 在word里:插入—符号—其他符号—来自选择:GB2312 选择要打印的英文字母以及符号—复制粘贴

                                1. 桃子

                                  谢谢告知?

                              2. a

                                ○在Linux字符界面下要改成空格

                                1. 桃子

                                  有什么问题呢?我测试过似乎没啥问题

                                2. Chris
                                  博主大大 在Linux下,能直接用C语言将UTF-8编码转换成 cp936 编码吗,而不是通过Linux命令行
                                  1. 桃子
                                    可以,你可以调用 iconv 函数。?
                                    1. Chris
                                      好的,但是我要在输入同时有中文和英文,转码输出后是乱码,怎么解决英文的问题 求大大赐教
                                      1. 桃子
                                        你把英文字母过滤掉就行啦。英文字母的编码 &lt; 256(一个字节)。
                                  2. 刘xx
                                    为撒我用24*24的字库解析出来的点阵不对啊。。
                                    1. 桃子
                                      因为这个代码是针对16*16的字库的。
                                      1. 刘xx
                                        整个24*24的呗
                                        1. 桃子
                                          稍微改一下代码就可以啦,24*24的我没有使用过。 这里有篇文章写得很不错:https://www.cnblogs.com/hoodlum1980/archive/2008/02/25/1079944.html
                                    2. 阿神
                                      作者你真的厉害呀 受教了!
                                      1. 桃子
                                        谢谢谢谢!相互学习。
                                      2. kitekiting
                                        Good,Thanks!
                                        1. 桃子
                                          啊哈哈,不客气!节日……快乐?
                                        2. 羽毛
                                          作者你好,不知道你还能不能看到。这篇文章对我帮助很大!不过就是我这边用的是fopen_s fprintf_s fread_s这种的,所以运行起来会有点出错,不知道该怎么改,或许可以请教一下吗?
                                          1. 桃子
                                            能收到呀。不过,那几个新版的函数我用得很少。具体是什么问题呢?
                                            1. 羽毛
                                              主要是我下的vs只能用新版的函数呜呜呜它在fseek和fread_s那边都说触发了断点,是不是我函数没写对呀
                                              1. 桃子
                                                你使用旧版的函数编译的时候,仔细看编译器的警告信息。 里面有提到一个宏,好像是 `_CRT_NONSTDC_NO_DEPRECATE` 还是 `_CRT_SECURE_NO_DEPRECATE` 来着,你在项目设置里面定义一下这个宏,然后就可以使用了。 我现在没有Windows环境,无法使用VS。
                                                1. 羽毛
                                                  我找到了一个同学可以用旧版的函数!我们一起琢磨琢磨,真的是超谢谢你啦!
                                                  1. 桃子
                                                    你太客气啦![可爱]
                                          2. ...
                                            想问一下 在linux环境下代码打印出的并不是预置的汉字能不能解答一下
                                            1. 桃子
                                              亲,评论中有人问过啦。 是因为Linux下面编码是utf8的原因,字库编码是gb2312,查询前需要转码。 晚点我有空修改一下文章。
                                              1. ...
                                                好的,非常感谢
                                            2. anonymous
                                              谢谢! 跟ssd1306驱动的点阵排列不一样。 ssd1306是先分成上半部16个字节、下半部16个字节。 上半部16个字节每个字节从右边第1位开始读取, lcd从每个字上半部最下面一个像素(也就是一个16x16点阵字的第8行第一列开始显示)。 显示成上半部8x16再显示下半部的8x16。
                                              1. 桃子
                                                嗯嗯,不客气。你那个驱动听起来挺复杂的?
                                              2. 鱼鱼鱼
                                                谢谢大佬
                                                1. 桃子
                                                  不客气~[可爱]
                                                2. 雨墨菲
                                                  楼主 你好!! fphzk = fopen(&#34;hzk16&#34;, &#34;rb&#34;);里面的rb是干嘛用的
                                                  1. 桃子
                                                    以二进制方式读![擦汗] 你关注的重点不对劲啊。。。
                                                    1. 雨墨菲
                                                      我最近在用FATFS指令集 和这个传递参数不一样 所以有点困惑
                                                      1. 雨墨菲
                                                        楼主讲的很好 我准备给移植到 stm8 里面 希望能成功
                                                        1. 桃子
                                                          好,预祝成功![憨笑]
                                                    2. baymax
                                                      key的数组是什么意思呢?
                                                      1. 雨墨菲
                                                        按位与 是用来取当前 位 的数据
                                                      2. 奥特曼
                                                        博主很厉害呀,但是能不能说明一下各行代码的含义来着,我Q853971180
                                                        1. 桃子
                                                          老兄,你这要求有点过了哈[笑哭]
                                                          1. 奥特曼
                                                            请问一下博主,要是使用SDK来实现汉字点阵显示的话,该如何来做呢,做完一名大二学生衷心请教
                                                            1. 桃子
                                                              啥子SDK?敢不敢说清楚点[糗大了],加我QQ:191035066
                                                              1. SonwFox
                                                                博主能加Q吗? 想请教问题Q947979215
                                                        2. txm
                                                          点阵字库生成,可用本文代码存取,支持不同字体: http://tongxinmao.com/upload/COMNET.exe
                                                          1. popy32 http://sfantree.com
                                                            字库原理讲的很详细,点赞
                                                            1. jack
                                                              感谢
                                                              1. iwakan
                                                                好用,谢谢了!
                                                                1. 雨纷纷
                                                                  嗯,不用谢,如果对目录下其它类型的字库有研究的话,欢迎提出来供大家参考。
                                                                  1. 飞得高
                                                                    有没把汉字转化为汇编数组???
                                                                    1. 雨纷纷
                                                                      只是输出方式不一样而已,数据没什么变化的吧? 所以应该不必单独再为汇编写一个。
                                                                2. 楼主你好!请问怎么打开比如HZK16字库下不同字体(比如宋体/黑体)的字模?(初学者实在有困难。。)
                                                                  1. 博主
                                                                    嗯。。。我也没研究过其它字体的格式呢。sry。 可以查下资料,应该是类似的。
                                                                    1. iwakan
                                                                      我用打开宋体打开了其他所有的汉字字体,都可以正常使用。代码虽然和上面不一样,但fseek(fphzk,offset,SEEK_SET)的fphzk都是一样的。
                                                                      1. txm
                                                                        http://tongxinmao.com/upload/COMNET.exe用这个
                                                                      2. OhBonsai https://github.com
                                                                        额,评论要填好多信息。 无良评论, 程序帮助了我^_^
                                                                        1. 雨纷纷
                                                                          呃…………(笑
                                                                          1. OhBonsai https://github.com

                                                                            不过貌似程序取得的值不对。 我是在linux编译的。

                                                                            用的是hzk16k

                                                                            这个逻辑无误。博主是不是要检查一下程序

                                                                            off = (94 * (areaCode - 1) + (indexCode - 1)) * 32
                                                                            
                                                                            1. 雨纷纷
                                                                              没在 linux 下编译过此代码,linux 终端是 UTF-8 编码的吧,这里确实有问题的。 我的代码只处理了 cp936 编码的情况。 老代码了……找个时间稍微优化下…………
                                                                              1. OhBonsai

                                                                                好啦,前几天突发想法。

                                                                                在shader里面画出汉字是个什么样的感觉。

                                                                                找了好久汉字的点阵码,终于实现啦。thank you~~

                                                                                https://ohbonsai.github.io/CG2017/demo/showHanZiInShader/index.html

                                                                                1. 雨纷纷
                                                                                  囧,不会玩图形…………没看出名堂来…………
                                                                                2. 小竹仔
                                                                                  博主 我想问一下 iOS的默认编码格式 不是GB2312的话 而是utf-8的话 该如何 修改呢
                                                                                  1. 桃子
                                                                                    把 UTF-8 转换成 GB2312 就好了,iconv 之类的。
                                                                                    1. 小竹仔
                                                                                      博主 不好意思 再打扰你一会 我在 网上找了比较多的iconv转码的方式 好像都不是很好 博主 你能不能加我 一下QQ(937454816)
                                                                            2. life123
                                                                              博主,请问有没有繁体字的实现,或者是繁体字的点阵字库
                                                                              1. 雨纷纷
                                                                                Sry,没有哦~
                                                                              2. dreamworks
                                                                                你好,请问下,我用FAT打不开字库文件?请问怎么解决
                                                                                1. 雨纷纷
                                                                                  FAT是啥?文件系统吗? 这个字库就是一个普通的文件,并不特殊,读不出来应该是你文件系统没正常工作吧。
                                                                                2. zzz_Hz
                                                                                  博主,我发现你的附件mod.7z是乱码哎╮(╯▽╰)╭
                                                                                  1. 雨纷纷
                                                                                    sorry,MIME设置错误。你直接“右键另存为...”就可以了。
                                                                                  2. Jason
                                                                                    我做iOS的 用xcode 按照楼主的方法 ,我打印出来 不是 “我”是什么原因,字库的问题吗 我hzk16、hzk16s等都用了就是打印不出对应的字
                                                                                    1. 雨纷纷
                                                                                      参考前一个评论,输入编码得为GB2312才行。
                                                                                      1. Jason
                                                                                        嗯 谢谢了
                                                                                    2. san
                                                                                      我是做ios 那个中文编码 你们是默认GB2312 还是你自己转为GB2312的?
                                                                                      1. 雨纷纷
                                                                                        Windows在locale为China的时候使用的就是GB2312。这种编码方式不在同的locale下所代表的字符不一样。
                                                                                        1. san
                                                                                          mac 是不行的. 那就是UTF8 用这个字库转换是有问题的? 有办法不转成GB2312换解决吗?
                                                                                          1. 雨纷纷
                                                                                            嗯,UTF-8不能直接用,这个字库已经很有历史了,那时候UTF-8估计都还没有投入使用吧。 要么转换,要么找 UTF-8 的字库(不过极有可能是没有的)。
                                                                                      2. 谢谢
                                                                                        很用有的文件.楼主大公无私.
                                                                                        1. 雨纷纷
                                                                                          代码写得比较丑,将就看哈,谢谢~~~ :-)
                                                                                        2. 游客
                                                                                          怎么读取字符和数字呢?
                                                                                          1. 雨纷纷
                                                                                            这个是中文字库,好像没有其它字符集。找对应的库吧。
                                                                                          2. 胡子
                                                                                            你好,字库我下载了,但是用什么软件打开呢?kill,word,写字板打开都是乱码。
                                                                                            1. 女孩不哭
                                                                                              用程序读数据,不能直接打开。 格式在上面列出来了。 或者自己写个工具来打开也可以。
                                                                                            2. xiaolin
                                                                                              楼主 请问这整个点阵字库如何生成的呢? 方便指点一下吗?
                                                                                              1. 女孩不哭
                                                                                                知道了单字的结构,还怕不知道整个文件的结构吗?
                                                                                                1. xiaolin
                                                                                                  a2a3之后点阵字符的几个字符没有,gb2312 16*16字库不完整 ,不知我的判断正不正确!
                                                                                                  1. 女孩不哭
                                                                                                    不是很清楚,我曾用到的简体中文里面都有。 如果是自己做字库,没有必要一定要按照这种方式存储,参考其存储过程即可。
                                                                                              2. NovemberEleven
                                                                                                学习了,最近烦怎样做点阵字,我这个点阵字是11x11的。。。
                                                                                                1. 女孩不哭
                                                                                                  看了我上面那个“我”字我图示,应该会做自己特定格式的字库了吧。
                                                                                                  1. NovemberEleven
                                                                                                    如果中文字是用utf-8编码的,怎样找到对应的HZK16的位置?
                                                                                                    1. 女孩不哭
                                                                                                      HZK中都是以GB2312(扩展ANSI,EUC)保存的,如果是utf-8,就需要先转换成GB2312(UTF-8 -&gt; UNICODE16 -&gt; GB2312(EUC),然后再取。 有点麻烦,但貌似也只能这么做。
                                                                                                      1. NovemberEleven
                                                                                                        谢谢哈,你好厉害啊!
                                                                                                还没有用户发表过评论,我要发表评论
                                                                                                编辑评论