拨开字符编码的迷雾--字符编码转换
来源:http://www.tudoupe.com时间:2022-07-05
连结到字符编码雾系列文章:
- dial-in字符编码的雾 - 字符编码的描述
- dial-in字符编码的雾 -编译器如何处理文件编码
- dial-in字符编码的雾 - 字符编码转换
- dial-in字符编码的雾--MySQL数据库字符编码
1. Windows API的介绍
本文介绍了使用Windows API的字符编码转换方法,包括WideCharToMultiByte和MultiByteToWideChar2个API,
API接口名中的MultiByte对多字节编码,如ASCII、UTF-8等,是多字节编码,而WideChar字体意思是宽字体,窗内宽字体具体指UTF-16编码。样本如下:
2. 接口封装
只支持简化中文(部分韩语和日语)的系统,iCodePage在这种情况下,API使用系统当前代码页(中文系统是CP936,即GBK字符集)来编码转换。但如果遇到以下情况,您需要手动指定代码页:
- 必须转换的字符串中的文本在系统当前代码页上不支持。 如果字符串包含中文,而当前系统代码页是英语;
- GBK字符集只包含部分韩语和日语,有些韩语和日语翻译可以正常转换,如果无法转换的情况,则必须指定iCodePage为支持韩语或日语的特定代码页,尤其是中国人和韩国人、日本人等混在一起时。例如,韩国的“烤鸡”不包括在GBK中,如果您仍然使用CP_ACP,那么您将得到错误的转换结果
?,十六进制3FGB18030(代码页54936)支持烤鸡,并可以手动指定iCodePage为54936。
如果代码包含不支持GBK的字符,例如"rooster","? Visual Studio 将播放以下提示:
选择“用其他代码保存”和选择“Unicode (UTF-8 with signature) - Code page 65001”保存。
虽然“简体中文(GB18030) - 代码页54936”也支持这些字符,但不能选择该选项进行保存,具体原因在 dial-in字符编码的雾 -编译器如何处理文件编码 中有详细的介绍。
相关新闻
- 2022-08-04 WPF的由来
- 2022-08-04 Win11勒索软件防护怎么打开?Win11安
- 2022-08-04 Windows系统jdk的配置
- 2022-08-04 Windows10 OneNote怎么重新登录?如何重
- 2022-08-04 超好用的 Windows 效率工具推荐
- 2022-08-04 Windows如何在CMD或PowerShell中配置代理
- 2022-08-04 powershell和cmd对比
- 2022-08-04 【QT】Windows下QT下载安装
- 2022-08-04 windows下 C++ 实现类属性的get和set方
- 2022-08-04 Win11快速助手在哪里?Win11打开快速
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

