vs中的一些编码问题

1. 基本概念

文件编码格式

首先vs中编辑,保存文件实际上也是将文件内容以一定的编码格式存储。对于中文字符串

string s = "一";

按不同的编码格式保存后,通过16进制文件查看器,可以看到中文的编码是能对应上的。

开放高级保存选项

运行时数据格式

对于上述的代码,运行时断点可以看到s的具体数据内容,比如GB2312编码是0xD2BB,而如果是UTF-8编码的话则是0xE4B880。

2. 一些测试

我做了一些测试验证文件保存格式和运行时数据格式的关系。

文件格式

数据格式

GB2312

GB2312

UTF-8

UTF-8

UTF-8-BOM

GB2312

可以看到并不是完全对应的关系,可能时vs在里面做了一些转换。

尤其是当我们设置了/source-charset-utf-8选项后,不论文件是什么格式,数据都是GB2312格式。

3. u8

前面提到通过改变文件保存编码格式,可以将中文字符串以UTF-8格式保存到运行时,但是并不稳妥。下面介绍非常稳妥的方式。

u8

在字符串前面加上u8,表示让编译器将后面的字符串以UTF-8的格式保存到数据中。

string s = u8"一";

关键是,它还跨平台。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值