ASNI to Unicode 转换与系统语言的问题

[版权说明]:转载我的文章,请注明出处,多谢!

环境:

(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

原文地址:https://www.cnblogs.com/91program/p/5255515.html