Unicode编码的使用心得及Unicode格式的INI文件

本文探讨了在Windows环境中Unicode编码的使用,特别是在开发软件时遇到的编码问题。作者指出,尽管Windows API提供Unicode接口以提高效率和避免编码冲突,但在调用Ansi接口时可能会遇到转换错误。此外,文章还讨论了Unicode格式的INI文件,分析了不同接口调用和文件格式的组合可能带来的转换逻辑,并提出创建Unicode INI文件的方法。
摘要由CSDN通过智能技术生成

1、引言

         在软件开发过程中,尤其是界面软件的开发,面向的客户不确定,客户使用的环境更加不确定,往往由于使用的编码问题,导致软件的使用产生问题。

         Microsoft从Windows 2000开始,所有的WindowsAPI的接口都是Unicode格式,但是为了开发人员方便,Microsoft提供了Ansi接口,不过Ansi接口最终调用的还是Unicode的接口,只不过中间经过了一层转换罢了。所以在Microsoft平台开发,调用Unicode接口效率比调用Ansi接口效率会有所提高,中间节省了Ansi编码到Unicode编码的转换,节省了内存的申请与释放。更有利的是,使用Unicode编码,不会再由于OS系统语言的不同,产生不必要的麻烦,才能开发出真真正正的全球化软件。

 

2、个人开发中遇到的问题

         前段时间由于开发一个软件,需要调用别人的接口,虽然我的软件是Unicode编码,对方的模块也是Unicode编码,但是对方提供的接口却是Ansi接口,在非中文系统下,由于涉及到中文路径,导致Ansi和Unicode编码转换出现错误,转换结果不可逆转。当OS的区域语言设置为中文时,转换接口可以逆转,可以正常使用。下面图一图二展示了不同的区域语言设置产生的效果。16进制大约的字符串为转换后的Ansi字符串。

 

 

图一、系统区域语言设为中文时

图二、系统区域语言设为非中文时

测试代码:

     //messagebox buffer

     wchar_t wc[1000] = {0};

     //

     char c1[] = "新建文件夹";

     wchar_t wc1[] = L"新建文件夹";

     wcscat(wc,L"新建文件夹(ansi)    char = ");

     for(int i = 0; i <strlen(c1); ++i)

         wsprintf(wc,L"%s %0X", wc, (unsigned</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值