• 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

  • 相关阅读:
    [模板]杜教筛
    [NOIP2014]解方程
    [NOIP2016] 组合数问题
    [HAOI2011] Problem b
    Rmq Problem mex
    [模板]Link-Cut-Tree
    [SDOI2013]森林
    单调队列优化多重背包
    [USACO17JAN]Promotion Counting
    [模板] 点分治
  • 原文地址:https://www.cnblogs.com/91program/p/5255515.html
Copyright © 2020-2023  润新知