详解MTK系统中字符转换问题
详解MTK系统中字符转换问题
MTK系统中字符转换问题是本文要介绍的内容,主要是来了解并学习MTK中一些小案例的应用,具体内容来看本文详解。
AD:2014WOT全球软件技术峰会北京站 课程视频发布
MTK系统中字符转换问题是本文要介绍的内容,主要是来了解并学习MTK中一些小案例的应用,具体内容来看本文详解。如果我不想在ref_list.txt文件中加入我们的字符串字符,那么我们是否可以直接在代码里定义字符串呢?例如中文字符串,因为在代码里定义的中文字符串都是GB码的,而MTK系统对于字符函数API都只接受UNICODE编码的。
我们可以通过文件conversion.c文件中的函数mmi_chset_text_to_ucs2(.... )函数对GB编码的字符串进行转换;但是使用该函数是必须将宏__MMI_CHSET_GB2312__打开,否则转换后必定显示乱码;为什么会这样呢?我们看入下代码片断:
在conversion.c中的头部有如下代码片断:
- #if defined(__MMI_CHSET_BIG5__)
- mmi_chset_enum g_chset_text_encoding = MMI_CHSET_BIG5;
- #elif defined(__MMI_CHSET_GB2312__)
- mmi_chset_enum g_chset_text_encoding = MMI_CHSET_GB2312;
- #else
- mmi_chset_enum g_chset_text_encoding = MMI_CHSET_UTF8;
- #endif
由此可见,如果我们不打开__MMI_CHSET_GB2312__宏,g_chset_text_encoding 就是不是MMI_CHSET_GB2312 值;而是其它值,则函数mmi_chset_text_to_ucs2(....)就不能对GB编码的字符串进行转换。
mmi_chset_text_to_ucs2(....)函数片断:
- kal_int32 mmi_chset_text_to_ucs2(kal_uint8 *dest, kal_int32 dest_size, kal_uint8 *src)
- {
- /*----------------------------------------------------------------*/
- /* Local Variables*/
- /*----------------------------------------------------------------*/
- /*----------------------------------------------------------------*/
- /* Code Body*/
- /*----------------------------------------------------------------*/
- return mmi_chset_convert(g_chset_text_encoding, MMI_CHSET_UCS2, (char*)src, (char*)dest, dest_size);
- }
问题是我们如何打开宏__MMI_CHSET_GB2312__呢?
我们来看看MKT的features配置文件——MMI_features.h中的片断。
- #if defined(CFG_MMI_CHSET_GB2312) && (CFG_MMI_CHSET_GB2312 == __ON__) || \
- (defined(__MMI_LANG_CHSET_DEPENDENCE__) && defined(__MMI_LANG_SM_CHINESE__))
- #ifndef __MMI_CHSET_GB2312__
- #define __MMI_CHSET_GB2312__
- #endif
- #endif
那么宏CFG_MMI_CHSET_GB2312又在哪里呢?????
我们看看文件MMI_features_switch.h代码片断如下:
- /*
- Description: Turn on simple Chinese GB2312 charset
- Option: [__ON__, __OFF__, __AUTO__]
- Reference: SOP_Add_New_Charset_Conversion.doc
- */
- #define CFG_MMI_CHSET_GB2312 (__AUTO__)
[疑问]在配置文件MMI_features_type.h中有如下定义
- /* general on/off/auto type */
- #define __ON__ (-1)
- #define __OFF__(-2)
- #define __AUTO__ (-3)
其中__AUTO__ 不知道是什么意思??????
当然如果__MMI_CHSET_GB2312__没有被Enable,我们可以直接使用函数mmi_chset_convert()
该函数原形如下所示:
- /*****************************************************************************
- * FUNCTION
- * mmi_chset_convert
- * DESCRIPTION
- * Convert string between 2 character sets. (will add the terminate character)
- * PARAMETERS
- * src_type [IN] Charset type of source
- * dest_type [IN] Charset type of destination
- * src_buff [IN] Buffer stores source string
- * dest_buff [OUT] Buffer stores destination string
- * dest_size [IN] Size of destination buffer (bytes)
- * RETURNS
- * Length of destination string, including null terminator. (bytes)
- *****************************************************************************/
- kal_int32 mmi_chset_convert(
- mmi_chset_enum src_type,
- mmi_chset_enum dest_type,
- char *src_buff,
- char *dest_buff,
- kal_int32 dest_size);
使用方式如下:
- mmi_chset_convert(MMI_CHSET_GB2312,MMI_CHSET_UCS2,(char * )soure_string,(char *)destion_string,source_size);
小结:MTK系统中字符转换问题的内容介绍完了,希望通过本文的学习能对你有所帮助!
详解MTK系统中字符转换问题相关推荐
- find linux 目录深度_浪里淘沙,详解Linux系统中Find命令的实用技巧
知了小巷:浪里淘沙,详解Linux系统中Find命令的实用技巧. 啊哈,找到了! 当我们需要在Linux系统上定位某个文件或目录时,find命令通常是必备之选. 它使用起来非常简单,但有许多不同的可选 ...
- php执行md5sum,Linux_详解Linux系统中md5sum命令的用法,MD5算法常常被用来验证网络文 - phpStudy...
详解Linux系统中md5sum命令的用法 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任 ...
- php ping icmp,Linux_详解Linux系统中ping和arping命令的用法,pingping 程序使用 ICMP 协议的强 - phpStudy...
详解Linux系统中ping和arping命令的用法 pingping 程序使用 ICMP 协议的强制回显请求数据报以使主机或网关发送一份 ICMP 的回显应答.回显请求数据报(" ping ...
- linux管道命令详解,Linux系统中的管道命令的用法详解
Linux系统中管道命令是linux系统的一个强大之处.下面由学习啦小编为大家整理了Linux系统中的管道命令的用法详解的相关知识,希望对大家有帮助! Linux系统中的管道命令的用法详解 管道命令操 ...
- centos 卸载软件_一篇看懂!详解-Linux系统中安装软件的三种方法
Linux系统中安装软件的三种方法 注:本文主要以CentOS为例介绍常用的安装方式,其他版本linux在文章底部 Linux系统中怎么安装软件,首先说一下应用程序与系统命令的区别: 1.文件位置 系 ...
- linux所请求的操作需要超级用户权限,详解Linux系统中的root权限控制
在Linux操作系统中,root的权限是最高的,也被称为超级权限的拥有者.普通用户无法执行的操作,root用户都能完成,所以也被称之为超级管理用户. 在系统中,每个文件.目录和进程,都归属于某一个用户 ...
- linux info文件夹,详解Linux系统中查询文档的man和info命令
manUsage: man [OPTION...] [章节] 手册页... -C, --config-file=文件 使用该用户设置文件 -d, --debug 输出 ...
- 安卓编译android.mk,详解安卓系统中的Android.mk文件
概述 Android.mk文件用来向编译系统描述如何编译你的源代码.更确切地说,该文件其实就是一个小型的Makefile.由于该文件会被NDK的编译工具解析多次,因此应该尽量减少源码中声明变量, ...
- linux ps-l命令详解,Linux系统中ps -l命令显示的英文含义
Linux系统中ps -l命令显示的英文含义 UID:启动这些进程的用户. PID:进程的进程ID. PPID:父进程的进程号(如果该进程是由另一个进程启动的). C:进程生命周期中的CPU利用率. ...
最新文章
- 解题报告(二)多项式问题(多项式乘法及其各种运算)(ACM/ OI)超高质量题解
- Linux生产环境CPU占用过高排查步骤
- 一个弹窗口的流氓软件
- SpringBoot实现定时任务
- git stash命令的用法
- 作者:司光亚(1967-),男,国防大学信息作战与指挥训练教研部教授,主要研究方向为战争复杂系统建模仿真。...
- mysql-5.1.50中文_mysql5.1 中文 乱码 mysql 5.1 中文字符集问题终极解决方案
- 使用Chrome保存网页为mht文件
- 部署一个Windows Server 2008 的只读域控制器
- CISA:警惕俄罗斯 “Sandworm” 黑客组织使用的新型恶意软件框架
- 测试面试题,自动化测试与性能测试篇(附答案)
- 三个关于“契约精神”的故事(转)
- 基于AE+C#读取文件及图层输出
- 西门子s1200教程_西门子S-1200入门PLC视频教程百度云资源下载
- 触屏查看大图(可以缩放)
- 各种提权、渗透经验技巧总结大全(下)
- pandox怎么用_神器Pandoc的安装与使用 | Flyaway's Blog
- win下装django
- 初识华为MDC智能驾驶计算平台
- Linux个人机器使用465发送邮件
热门文章
- java 重建二叉树_【剑指offer】 Java实现重建二叉树
- 计算机二级考试需要怎么备考,计算机二级ms office应该怎么备考 考试内容是什么...
- android jar 反射,android 第三方jar库 反射得到自己的资源ID
- matlab 回退到上一行,对乒乓球回滚的分析与MATLAB模拟
- super在python3和python2_Python扩展与 – 使用super()python 3 vs python 2
- builtins自定义_ng-repeat里创建的自定义指令
- c++游戏代码坦克大作战_一红一蓝多种模式的双人小游戏:红蓝大作战
- Leetcode 2 两数相加 Python
- TensorFlow学习笔记(1):variable与get_variable, name_scope()和variable_scope()
- volatile的作用