其他分享
首页 > 其他分享> > c – 将UTF-8中的文件转换为UTF-16

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