OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3620|回复: 8

关于汉字编码的问题

[复制链接]

221

主题

501

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
金钱
1238
注册时间
2013-1-9
在线时间
121 小时
发表于 2016-2-2 11:58:00 | 显示全部楼层 |阅读模式
1金钱
原子老师,我在学习汉字显示实验,有个问题搞不太明白,主程序中调用显示字符串的函数 Show_Str(60,50,200,16,"战舰  STM32 开发板",16,0); ,其中的汉字“战舰”,“开发板”,编译完了就是直接以GBK码存储的吗?因为我在text.c函数里看了半天都是直接用*str去调用根据GBK码找到相应的点阵字库的函数Get_HzMat,然后显示的。不知道您懂我的意思没有。

最佳答案

查看完整内容[请看2#楼]

楼主真逗,都回答你是了,你还在纠结这个问题。你能看懂源文件,你不也从源文件推理出你的答案了吗? 其实这个问题跟编译器有关,跟源文件保存的格式也有关系,但是由于大陆PC上文本文件的保存格式为GBK,所以一般编译器编译出的代码里面,汉字也是已GBK保存的。所以这些代码在台湾香港的话运行结果我估计是会显示出错的,因为保存的不是GBK,但程序假设保存的是GBK而去寻找相应的字库。所以如果源文件以其他格式保存的话,这个就 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2016-2-2 11:58:01 来自手机 | 显示全部楼层
楼主真逗,都回答你是了,你还在纠结这个问题。你能看懂源文件,你不也从源文件推理出你的答案了吗?
其实这个问题跟编译器有关,跟源文件保存的格式也有关系,但是由于大陆PC上文本文件的保存格式为GBK,所以一般编译器编译出的代码里面,汉字也是已GBK保存的。所以这些代码在台湾香港的话运行结果我估计是会显示出错的,因为保存的不是GBK,但程序假设保存的是GBK而去寻找相应的字库。所以如果源文件以其他格式保存的话,这个就要看编译器的心情了,但是不管怎么样,总是要保存成一种格式的,不是GBK,也是其他的utf8,utf16之类的,不会是保存成位图文件。
回复

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2016-2-2 13:23:22 来自手机 | 显示全部楼层
是的,有啥问题?
回复

使用道具 举报

221

主题

501

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
金钱
1238
注册时间
2013-1-9
在线时间
121 小时
 楼主| 发表于 2016-2-2 16:07:12 | 显示全部楼层
ofourme 发表于 2016-2-2 13:23
是的,有啥问题?

多谢回复,因为我没找到怎么把“战舰”“开发板”等汉字转换成GBK码的程序,所以就想是不是程序编译后就直接把这些汉字转成GBK码了。
回复

使用道具 举报

0

主题

45

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
380
金钱
380
注册时间
2014-12-13
在线时间
89 小时
发表于 2016-2-2 23:47:59 | 显示全部楼层
Show_Str(u16 x,u16 y,u16 width,u16 height,u8*str,u8 size,u8 mode)这个函数就是根据汉字内码查找存储在flash里面的汉字信息的,TEXT.c里面一共4个函数,好好看看吧
回复

使用道具 举报

221

主题

501

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
金钱
1238
注册时间
2013-1-9
在线时间
121 小时
 楼主| 发表于 2016-2-3 10:23:12 | 显示全部楼层
迷恋烟花的瞬间 发表于 2016-2-2 23:47
Show_Str(u16 x,u16 y,u16 width,u16 height,u8*str,u8 size,u8 mode)这个函数就是根据汉字内码查找存储在f ...

多谢回复,程序都看了,这个函数确实是根据汉字内码查找Flash里面的汉字字库数据的,我的意思是引用这个函数Show_Str(60,50,200,16,"战舰  STM32 开发板",16,0); 里面的汉字“战舰”“开发板”,是不是编译后直接就是GBK编码了?
回复

使用道具 举报

221

主题

501

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
金钱
1238
注册时间
2013-1-9
在线时间
121 小时
 楼主| 发表于 2016-2-4 16:23:41 | 显示全部楼层
本帖最后由 anazel 于 2016-2-4 16:31 编辑

自己顶一下,原子老师的程序中没有判断汉字是哪一种编码的函数,好像直接判定是GBK编码,然后按照GBK编码找字库数据。
回复

使用道具 举报

221

主题

501

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
金钱
1238
注册时间
2013-1-9
在线时间
121 小时
 楼主| 发表于 2016-2-4 22:09:14 | 显示全部楼层
ofourme 发表于 2016-2-2 11:58
楼主真逗,都回答你是了,你还在纠结这个问题。你能看懂源文件,你不也从源文件推理出你的答案了吗?
其实 ...

多谢这么仔细的解答,现在搞清楚了。
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2016-12-22
在线时间
13 小时
发表于 2016-12-22 14:03:08 | 显示全部楼层
66666666
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 11:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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