C++中使用HACLON解决韩文显示乱码与存储乱码

文章目录

  • 前言
  • 一、项目属性设置
  • 二、字符在多字节与UNICODE之间转换
  • 三、Haclon的Htuple中存储韩文并输出
  • 四、ini文件存储韩文并正常读取
  • 五、log日志正常存储韩文
  • 总结


前言

项目需要进行中英韩语言转换,因项目原先使用的是多字节,显示韩文乱码(??),所以需要转换成unicode进行韩文显示。

但是在进行转换过程中发现关于韩文乱码的记录很少,且参考价值有限,尤其是关于HACLON存储韩文,故记录一下。

一、项目属性设置

1、在项目属性中将字符集改为unicode。

 

 在此状态下,控件可以正常显示韩文。如果控件文字是固定显示的,将工程重新编译成功后,就够了。

二、字符在多字节与UNICODE之间转换

 工程刚开始切换的时候会遇到很多报错,不要慌,一般都是都是字符格式的问题;

多字节:"多字节";
unicode下:_T("多字节"); //声明标识符:     
USES_CONVERSION;   
T2A\A2W\CA2W等,
这几种是最常用的几种转换方式,其余的报错,可以自行百度。


三、Haclon的Htuple中存储韩文并输出

1、将系统默认的几个格式修改为"utf8"
      ("filename_encoding", "utf8");
       ("write_halcon_files_encoding", "utf8");
     ("read_halcon_files_encoding_fallback", "utf8");

这样你的韩文存储在HTuple中和输出出来都是正常的不会乱码。

四、ini文件存储韩文并正常读取

1、韩文在ini文件中存储需要注意ini文件的格式,必须为“UTF-16LE”,其余的格式虽然能存储,但是程序通过键值对的方式读出来是乱码的情况。

 五、log日志正常存储韩文

通过log日志插件存储韩文,会遇见韩文乱码的情况。我们可以通过对存储的日志进行一次字符判断和字符转换。中文和英文正常存储,韩文由宽字节转换为多字节,log日志就能正常存储。

      CString Unicode=ㄴ후ㅐ푸ㅐ;

       wchar_t* unicode = Unicode.AllocSysString();
        int len;
        len = WideCharToMultiByte(CP_UTF8, 0, unicode, -1, NULL, 0, NULL, NULL);
        char *szUtf8 = (char*)malloc(len + 1);
        memset(szUtf8, 0, len + 1);
        WideCharToMultiByte(CP_UTF8, 0, unicode, -1, szUtf8, len, NULL, NULL);
        strResult = szUtf8;
        free(szUtf8);
        return strResult;


 

总结

小语种转换,本质上还是字符格式转换,我是自己摸索,网上的资源太少,过程太艰难,记录分享一下。

如果有写的不对或者想要补充的欢迎在评论区留言。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值