c - 如果源代码在 win32 中是 UTF-8 编码的,如何显示 UTF-16 const 字符串?

标签 c winapi mingw encode

我的程序需要显示一些 unicode 字符串。如果我使用 UTF-16LE 保存源代码,一切正常。但是,我无法使用 mingw 在 linux 中进行交叉编译。如果我使用UTF-8保存源代码,则可以毫无问题地编译源代码。但所有 const unicode 字符串都无法正确显示,因为它们被编码为 UTF-8。当源代码保存为UTF-8编码时,如何正确显示unicode字符串?

示例代码:

#include <Windows.h>

int main(int argc, const char *argv[])
{
    MessageBoxW(NULL, L"你好", L"你好", MB_OK);
}

Compiled with UTF-16LE source file

Compiled with UTF-8 source file

最佳答案

经过一些测试,如果文件编码为没有签名(BOM)的 UTF-8,Visual Studio 无法正确编码字符串。将编码方案更改为带签名的 UTF-8 后一切正常。

关于c - 如果源代码在 win32 中是 UTF-8 编码的,如何显示 UTF-16 const 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59486063/

相关文章:

c - _NFILE 定义在哪里

c - unix DECLARE_WAIT_QUEUE_HEAD (var) var 原型(prototype)?

c++ - `fopen` 和 QT(MinGW) 错误

c++ - "Dual-target"MinGW-w64 不是真的双目标?

c - 程序运行不佳(意味着输出(printf))但在 gdb t.exe 中运行良好

c - 无法将文件中的字符串与用户在 C 中输入的字符串数组进行比较

c - 不正确的输出和警告消息 '' 从 int '' 创建指针

c++ - Win32 中的 RedrawWindow 和 UpdateWindow 有什么区别?

windows - 命名管道高效异步设计

c++ - 如何创建虚拟文件?