gpt4 book ai didi

c++ - UTF-16 到 UTF8 与 WideCharToMultiByte 问题

转载 作者:可可西里 更新时间:2023-11-01 10:46:26 26 4
gpt4 key购买 nike

int main(){
//"Chào" in Vietnamese
wchar_t utf16[] =L"\x00ff\x00fe\x0043\x0000\x0068\x0000\x00EO\x0000\x006F";
//Dump utf16: FF FE 43 0 68 0 E 4F 0 6F (right)
int size = WideCharToMultiByte(CP_UTF8,0,utf16,-1,NULL,0,NULL,NULL);
char *utf8 = new char[size];
int k = WideCharToMultiByte(CP_UTF8,0,utf16,-1,utf8 ,size,NULL,NULL);
//Dump utf8: ffffffc3 fffffbf ffffc3 ffffbe 43 0
}

这是我的代码,当我将它的字符串转换为 UTF-8 时,它显示了一个错误的结果,那么我的代码有什么问题吗?

最佳答案

wchar_t utf16[] = L"\uFEFFChào";
int size = 5;

for (int i = 0; i < size; ++i) {
std::printf("%X ", utf16[i]);
}

此程序打印出:FEFF 43 68 E0 6F

如果打印出您从文件中读取的每个 wchar_t 打印出 FF FE 43 0 68 0 E 4F 0 6F 那么 UTF-16 数据没有被正确读取文件。这些值代表 UTF-16 字符串:`L"ÿþC\0h\0à\0o"。

您没有显示从文件中读取的代码,但这是正确执行此操作的一种方法:

https://stackoverflow.com/a/10504278/365496

关于c++ - UTF-16 到 UTF8 与 WideCharToMultiByte 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23015831/

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