linux系统下UTF-8转GBK编码,使用汉字字库在LCD显示汉字
一、
我用了正点原子的字库生成工具,生成了12、16、24号字体大小的GBK编码字库,汉字在liunx下存储方式默认为UTF-8内码形式,所以需要将UTF-8内码转换为GBK内码,UTF-8内码占3个字节,GBK内码占2个字节。
int opt_lcd::disp_str(int x, int y, char *str,unsigned char size,bool inv)
{ unsigned char bHz = 0;char tmp_buf[100];//用来存放转换后的GBK码int j,m;char *data_buf = (char *)malloc(100);//data_buf存放转换前的UTF-8内码while( *str !='\0'){data_buf[m++] = *str++;}Get_GBK_Code((unsigned char *)data_buf, (unsigned char *)tmp_buf); //转换编码格式while (tmp_buf[j] !='\0'){if(!bHz){if(tmp_buf[j] > 0x80) bHz = 1; else{if(x > (128-size/2)) {x = 0;y+=2;}if(y > 7) {break;}if(tmp_buf[j]==13){ x = 0;y+=2; } elsedisp_char(x,y,tmp_buf[j],size,inv);//显示英文j++; x+=size/2; }} else{bHz = 0;if(x > (128-size)) {x = 0;if((size ==12)||(size == 16))y+=2;if(size == 24)y+=3;}if(y > 7)break;Show_Font(x,y,&tmp_buf[j],size,inv);//显示汉字x += size; j+=2; }}free(data_buf);return 0;
}
转换具体实现函数如下:
int opt_lcd::Get_GBK_Code(unsigned char *one_chinese_buf,unsigned char *tmp_buf)
{unsigned char *output = tmp_buf;UTF8_to_GBK(one_chinese_buf, strlen((const char *)one_chinese_buf), output, 100);return 0;
}int opt_lcd::UTF8_to_GBK(unsigned char *input_buf, size_t input_len, unsigned char *output_buf, size_t output_len)
{const char *encTo = "GBK";const char *encFrom = "UTF-8";char *srcstart = (char *)input_buf;char *tempoutbuf = (char *)output_buf;int i = 0;long ret = 0;iconv_t fd = iconv_open(encTo, encFrom);if (fd == (iconv_t)-1){printf ("iconv_open fail \n");return -1;}memset(output_buf, 0, output_len);ret = iconv (fd, &srcstart, &input_len, &tempoutbuf, &output_len);if (ret == -1){printf ("iconv fail \n");}iconv_close (fd);return 0;
}
二、
如果出现代码运行出现“iconv fail”的错误,就是需要更新libiconv库,到iconv官网下载最新的库源码包,下载地址为:
http://www.doczj.com/doc/c89b690976eeaeaad0f33045.html /gnu/libiconv/libiconv-1.14.tar.gz
解压后得到libiconv目录,在libiconv目录下:
$./configure --prefix=$PWD/out --host=arm-linux
$make
$make install
上述命令执行完成后会在libiconv目录下生成新的out目录,该目录下存在4个目录分别是:
bin include lib share
在lib目录下为生成的库文件,其中一个为preloadable_libiconv.so,把它下载到开发板
的lib目录下,然后再设置开发板的系统环境变量:执行下面语句
$ export LD_PRELOAD=/lib/preloadable_libiconv.so
三、实验结果
linux系统下UTF-8转GBK编码,使用汉字字库在LCD显示汉字相关推荐
- 2.1.Linux系统下启动MySQL的命令及相关知识
2019独角兽企业重金招聘Python工程师标准>>> 一.总结一下: 1.Linux系统下启动MySQL的命令: /ect/init.d/mysql start ( ...
- Linux系统下启动MySQL的命令及相关知识
一.总结一下: 1.Linux系统下启动MySQL的命令: /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令: /ect/init. ...
- [译] APT分析报告:01.Linux系统下针对性的APT攻击概述
这是作者新开的一个专栏,主要翻译国外知名的安全厂商APT报告文章,了解它们的安全技术,学习它们溯源APT组织的方法,希望对您有所帮助.第一篇文章主要分享Linux系统下针对性的APT攻击及技术要点,并 ...
- Linux系统下便捷使用中国知网的方式
本篇文章讲解在linux平台下合理使用中国知网的方式,包括:论文下载,文件名乱码处理等内容,并提供相应代码. (1)论文下载 背景:由于cnki并未提供linux平台下的caj阅读器,同时使用模拟器运 ...
- linux系统python截图不显示中文_Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题...
本文主要向大家介绍了Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题,通过具体的内容向大家展现,希望对大家学习Linux运维知 ...
- Linux系统下如何挂载FAT32的U盘
Linux系统下如何挂载FAT32的U盘 作者: 字体:[增加 减小] 类型:转载 时间:2013-04-02 Linux挂载U盘步骤如下: 1:将U盘插入USB接口,检查是否插好 2:用fdisk命 ...
- CentOS下Apache环境支持GBK编码解决网页乱码问题
为什么80%的码农都做不了架构师?>>> 问题描述 在CentOS系统中采用Apache服务器安装GBK编码的程序出现乱码,这主要是因为默认安装的Apache服务器字符编码为U ...
- Linux系统下操作的常用快捷键
Linux系统下操作的常用快捷键 Ubuntu基本快捷键(可能有重复.不全)欢迎指正 * 打开主菜单 = Alt + F1 类似Windows下的Win键,在GNOME中打开"应用程 ...
- linux系统下键盘按键的重新映射——xmodmap工具和xev工具
虽然linux下小键盘还是不能用,但是找到一篇好文章 linux系统下键盘按键的重新映射--xmodmap工具和xev工具 文章目录 1. xev工具: 2. xmodmap工具 大家会不会有时候,感 ...
- linux加载u盘乱码怎么转换,Linux系统下加载U盘设备时文件乱码的有效解决方法
很少情况会在Linux系统下使用U盘,但是最近有朋友在Linux系统下加载U盘设备的时候发现U盘内的文件出现了乱码现象,这该怎么办呢?很多朋友对Linux系统又不太熟悉,不知道该怎么操作,没关系,让小 ...
最新文章
- Android--UI之ImageView
- 你的编程技能是否与时俱进? TIOBE 4 月榜单出炉
- Android中开发习惯
- 怎么把写好的python代码打包成exe-详解如何将python3.6软件的py文件打包成exe程序...
- kubernetes集群搭建以及遇到的问题
- 火车头如何才能设置发布的时候,如果是有html代码就直接的转换掉,互联网上笑话抽取及排重---火车头采集器的使用和MD5算法的应用...
- mysql驱动profilesql_java连接mysql的驱动配置问题
- oracle 移动日志文件,Oracle数据库移动数据文件、日志文件和控制文件
- mfc大观之一(全局对象)
- 经典C语言编程100例——题目+答案代码(完结)
- 【编程|二十四点】关于编程解决二十四点的两种思路
- 斯蒂文斯理工学院计算机科学硕士,斯蒂文斯理工学院计算机科学硕士专业
- 机器学习:kNN算法(一)—— 原理与代码实现(不调用库)
- 星际争霸兵种的诉苦(简略版)
- 安装Xp和Win7双系统方法(图文教程)
- CP2102 USB to UART Bridge Driver的安装
- C#中 var是个什么意思?
- NS2 实现有 20 个节点的 WLAN
- 西门子S7-1500PLC大型程序,各种FB块PTO控制20多个轴
- 2022年全球及中国场地电动车行业市场规模竞争格局研究预测及市场发展趋势分析预测
热门文章
- WPS2019 所有宏被禁,用启用宏要付费,如何免费使用
- oracle19c ojdbc6,解决ojdbc6升级ojdbc8中文乱码问题
- 【安装sql 2008步骤】
- 2020 年初,我制作完成了一本掘金小册
- 惠普HP ENVY 5055 打印机驱动
- 在WINDOWS XP环境下部署基于网络的开源入侵监测平台——snort
- ISO50001认证辅导,这套新标准将取代主要着重实物资产管理的 PAS55系列标准
- win7无法连接WIFI,安装无线驱动 AR9485 WIFI Driver for Windows 7 (32-bit, 64-bit)
- 免费录屏软件有哪些?分享4个专业录屏软件
- 中文近义词工具包:Synonyms