小编far*_*ost的帖子

为什么在winapi中转换UTF16 - > UTF8 - > UTF16后,filename有不同的字节?

我有下一个文件: 在此输入图像描述

我使用ReadDirectoryChangesW来读取当前文件夹中的更改.我得到了这个文件的路径:L"TESTӠ⬨☐.ipt":

在此输入图像描述

接下来,我想将其转换为utf8并返回:

std::string wstringToUtf8(const std::wstring& source) {
  const int size = WideCharToMultiByte(CP_UTF8, 0, source.data(), static_cast<int>(source.size()), NULL, 0, NULL, NULL);
  std::vector<char> buffer8(size);
  WideCharToMultiByte(CP_UTF8, 0, source.data(), static_cast<int>(source.size()), buffer8.data(), size, NULL, NULL);
}

std::wstring utf8ToWstring(const std::string& source) {
  const int size = MultiByteToWideChar(CP_UTF8, 0, source.data(), static_cast<int>(source.size()), NULL, 0);
  std::vector<wchar_t> buffer16(size);
  MultiByteToWideChar(CP_UTF8, 0, source.data(), static_cast<int>(source.size()), buffer16.data(), size);
}

int main() {
    // Some code with ReadDirectoryChangesW and 
    // ...
    // std::wstring fileName = "L"TEST ????.ipt""
    // ...

    std::string filenameUTF8 = wstringToUtf8(fileName); …
Run Code Online (Sandbox Code Playgroud)

c c++ winapi encoding utf-8

2
推荐指数
1
解决办法
145
查看次数

标签 统计

c ×1

c++ ×1

encoding ×1

utf-8 ×1

winapi ×1