VC工程中的字符集工程属性和字符编码

一工程字符集属性

工程属性里,字符集可以选择“Use Unicode Character Set”和“Use Multi-Byte Character Set”。此选项只控制代码里的API是用宽字符版的还是ANSI字符版的,它控制不了代码里的字符是用Unicode编码还是ANSI编码。


如果选择了“Use Unicode Character Set”,则代码里用到的API被解释为UNICODE版本的API(带标记W的API),如MessageBox被解释为MessageBoxW;
如果选择了“Use Multi-Byte Character Set”,则代码里用到的API被解释为ANSI编码版本的API(带标记A的API),如MessageBox被解释为MessageBoxA。


二字符编码

假设当前OS的字符集为GBK,则:

1 源代码文件里面的字符集

     使用当前OS的字符集GBK保存源程序,如“中”字的编码值为[0xD6,0xD0]。则在源程序的cpp文件中“中”字就是编码值[0xD6,0xD0]的形式保存。


2  运行时字符串变量的字符集

字符变量的字符编码是由操作系统的字符集和前缀L来决定的:

1> 如果字符串常量前面如果有标识L,则无论系统的字符集是什么,被此字符串赋值的变量的内容都是Unicode编码的。编译器会将在cpp文件中以GBK编码保存的“中”字对应的UNICODE编码的值0x4E2D赋值给字符串变量。

2> 如果字符串常量前面没有标识L,那么被此字符串赋值的变量的内容是编译器默认字符集编码方式(VC编译器默认的字符集是操作系统的字符集,此例为GBK)。


运行时,如OS为GBK字符集时,汉字"中"运行时的编码值为:

 

 OS为BIG5字符集时,汉字"中"运行时的编码值为:

这两个对比证明正如第2条所说,没有带L时,赋值的字符串变量的内容是按照当前操作系统的字符集来编码的。


如何修改windows的字符集?通过控制面板里的地区和语言,修改current system locacle即可。


如何查看当前windows的字符集?

打开命令提示符,在标题栏点右键,选择“属性”。
在选项卡的“选项”里会发现:
当前代码页
936 (ANSI/OEM - 简体中文 GBK)



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值