gpt4 book ai didi

c++ - 如何正确初始化宽字符串?

转载 作者:太空狗 更新时间:2023-10-29 19:51:03 25 4
gpt4 key购买 nike

我正在尝试找出 c 中的宽字符。例如,我测试了一个包含单个字母“Ē”的字符串,该字符串在 utf8 中编码为 c492。

char* T1 = "Ē";
//This is the resulting array { 0xc4, 0x92, 0x00 }

wchar_t* T2 = L"Ē";
//This is the resulting array { 0x00c4, 0x2019, 0x0000 }

我原以为第二个数组是 {0xc492, 0x0000},但它包含一个在我看来只会浪费空间的额外字符。谁能帮助我了解这是怎么回事?

最佳答案

您在这里成功完成的是 mojibake。您的源代码是用 UTF-8 编写的,但它是在 Windows 代码页 1252 中解释的(即编译器源字符集是 CP1252)。

宽字符串内容是UTF-8字节0xC4 0x92转换成UCS-2的Windows代码页1252字符。 最简单的出路是改用转义符:

wchar_t* T2 = L"\x112";

wchar_t* T2 = L"\u0112";

更大的问题是,据我所知,C 和 C++ 都没有在代码本身内指定源字符集的机制,因此它始终是您可以轻松复制粘贴的外部设置或选项。

关于c++ - 如何正确初始化宽字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55795130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com