【发布时间】:2023-03-09 04:07:01
【问题描述】:
如果我创建一个 utf8 编码的 char 数组并将指针传递给这样的字符串
char buffer[100];
CreateMyUTF8EncodedBytes(buffer, "some string with fancy characters like ö");
auto s = gcnew String(buffer);
大部分是正确的,但非 ASCII 字符被乱码取代。我仔细检查了缓冲区数据,它是正确的,事实上,如果我将缓冲区转换为托管数组并将其提供给 system::text::encoding::utf8::getstring 那么它会返回正确的字符串。
它也不是 ASCII,如果我用 const char* 文字填充缓冲区,我会在某些字符上得到非 ascii 值,结果是正确的。
所以很明显,无论字符串构造函数试图处理什么,它都不是 UTF8 也不是 ASCII。它使用什么编码?可以改吗?
【问题讨论】: