@zwh8800
2017-08-23T10:23:59.000000Z
字数 426
阅读 190927
blog
归档
c/c++
字符编码
c/c++定义了窄字符和宽字符,但窄字符串和宽字符串的具体编码确取决于实现。本文对其进行一下剖析。
c/c++定义了窄字符和宽字符,但窄字符串和宽字符串的具体编码确取决于实现。
在Visual studio中,窄字符串(char*,””)的编码和文件的编码一致,说白了就是把文件中被引号括起来的部分原封不动的变成字符串。而宽字符串(wchar_t*,L””)则是一律编码为UTF-16。
在GCC中,更灵活一些,可以通过选项指定“文件编码”,“字符编码”,“宽字符编码”。
-finput-charset:指定输入文件的编码格式。
-exec-charset:指定窄字符串的编码格式。
-exec-wide-charset:指定宽字符串的编码格式。
例如:
-finput-charset=GBK -exec-charset=utf-8
表示输入文件为GBK,字符串为utf-8格式,会将文件中的汉字自动转化为utf-8格式。