c – 将UTF-8中的文件转换为UTF-16
作者:互联网
C中的程序需要读取以utf-8编码的文件.不幸的是,使用char *它不能获得扩展字符(☺☻♥♦•◘等),而wchar_t *错误地解释它们.我管理它的算法是:
1)制作一个新文件
2)将其命名为[原始名称] Utf-16
3)将原始文件复制到新文件,同时进行转换
4)提取数据.
5)在不再需要时删除该临时文件.
我被困在3),有没有像“FileUTF8toUTF16”这样的功能?
解决方法:
这就是我使用的
int nLenWide = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)(pData + nOffset),
(int)(nDataLen - nOffset), NULL, 0);
if (MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)(pData + nOffset),
(int)(nDataLen - nOffset),
str.GetBuffer(nLenWide), nLenWide) != nLenWide)
{
str.ReleaseBuffer(0);
ASSERT(false);
return str;
}
str.ReleaseBuffer(nLenWide);
return str;
其中pData是指向实际utf-8数据的BYTE指针,nOffset通常为3(BOM).
标签:c,unicode,utf-16,windows,utf-8 来源: https://codeday.me/bug/20190826/1728876.html