将unicode字符串定义为字节数组

Define unicode string as byte array

本文关键字:字节 字节数 数组 定义 unicode 字符串      更新时间:2023-10-16

假设我们有一个windows-1251编码的main.cpp文件,其内容如下:

int main()
{
     wchar_t* ws = L"котэ"; //cat in russian
     return 0;
}

如果我们在VisualStudio中编译它,一切都很好,但是我们要用GCC编译它,GCC的源代码默认编码是UTF-8。当然,我们可以转换文件编码或为编译器设置选项"- finputcharset =windows-1251",但如果不是呢?有一些方法可以通过将原始文本替换为十六进制UTF32字节来做到这一点:

int main()
    {
         wchar_t* ws = (wchar_t*)"x3Ax04x00x00x3Ex04x00x00x42x04x00x00x4Dx04x00x00x00x00x00x00"; //cat in russian
         return 0;
    }

但是有点奇怪:4个字母变成了20个字节(

)

还能怎么做呢?

您需要的是使用GCC和vs都能理解的文件编码。在我看来,将文件保存为UTF-8编码是前进的方向。

另见:我如何使Visual Studio将所有文件保存为UTF-8而不需要在项目或解决方案级别上签名?