建设一个人才网站需要的人才,网页设计国外设计欣赏网站,sem优化师是什么意思,官方网站建设报价表详解MTK系统中字符转换问题 2011-09-05 19:02 佚名 互联网 字号#xff1a;T | TMTK系统中字符转换问题是本文要介绍的内容#xff0c;主要是来了解并学习MTK中一些小案例的应用#xff0c;具体内容来看本文详解。 AD#xff1a;2014WOT全球软件技术峰会北京站 课程视频发布… 详解MTK系统中字符转换问题 2011-09-05 19:02 佚名 互联网 字号T | T MTK系统中字符转换问题是本文要介绍的内容主要是来了解并学习MTK中一些小案例的应用具体内容来看本文详解。 AD2014WOT全球软件技术峰会北京站 课程视频发布 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系统中字符转换问题的内容介绍完了希望通过本文的学习能对你有所帮助