wchar_t ws[] = L"我a1" 出现了 "converting to execution character set
从这个编译错误引发的一系列查找资料。
devc++ 的文本编辑器使用的编码不是utf8, 所以文本编辑器里的代码 【我】 使用的可能是gbk类的编码,
因此出现了 unicode中不可能出现的字节,从而报错。
总结一下:
C/C++中有这样两个编码概念:
source character set:源文件的编码
execution character set:执行环境的编码
source character set和你的文件中的character set不一致。编译时使用 finput-charset=GB2312 指定源文件的编码方案即可。
还有一种变态的避免 source charset 和 execution charset的办法: 转义字符。
【我】的unicode 值是 ced2, 因此 ws[] = L"\xce\xd2"; 绝对纯正!
字符编码涉及的范围:
1、 源文件中字符串的编码, 同样时字符串 【“我”】, 源文件以gbk保存或者以utf8 保存,在磁盘上的字节流肯定是不同的。