[版权说明]:转载我的文章,请注明出处,多谢!
环境:
(1) EVC4 +CE5.0 中文模拟器
(2) EVC + 英文Windows CE 5.0 开发板 + 中文字库
由于要读文件,文件中的字符采用的是ASNI,显示前需要转换为Unicode。使用函数mbstowcs()进行转换。
(1)在模拟器环境下,一切正常。转换与显示都没有问题。
(2)在开发板上,由于系统不支持中文,所以采用动态加载一ttf字库的方式。显示不经过转换的Unicode字符正常,但显示通过mbstowcs()转换的字符串,显示为乱码。
调试(单步)发现,mbstowcs()转换后的字符串,已经是乱码。导致无法正确显示。
分析:可能与系统是英文有关。由于mbstowcs()函数执行,可能需要转换码表,但是英文系统没有。
具体的原因不明!
另外,使用函数MultiByteToWideChar(CP_ACP,0,&cInfoTmp[2],-1,ptcOutLRC,(iLengthTmp - 2) / 2);也出现同样的问题。
解决方法:在定制CE系统时,增加Local(但没有设置为默认,也不系统当前使用的Local),则MultiByteToWideChar转换成功。
例如转换到中文(Locale为936):MultiByteToWideChar(936,0,&cInfoTmp[2],-1,ptcOutLRC,(iLengthTmp - 2) / 2);
解决过程见:http://topic.csdn.net/u/20080506/08/45c8a835-85f2-4427-a25f-e745197ee9e1.html?seed=824633417
时间: 2024-10-29 19:11:14