无法从utf16 little endian转换为utf8

时间:2014-12-05 22:09:51

标签: c++ visual-studio utf-8 stl utf-16

迫切需要你的帮助。 “C:\ Temp \ 1(2).txt”是小端UTF16的测试文件:

3C 00 64 00 69 00 76 00 3E 00
<div>

尝试通过以下代码从此文件获取UTF8:enter image description here

#include <vector>
#include <string>
#include <locale>
#include <codecvt>
#include <vector>
using std::string;
using std::wstring;
using std::vector;


std::ifstream logfile("C:\\Temp\\1 (2).txt", std::ios::binary);
vector<char> paste_code_buf((std::istreambuf_iterator<char>(logfile)), (std::istreambuf_iterator<char>()));
wstring paste_code;
paste_code.assign(paste_code_buf.begin(), paste_code_buf.end());

std::wstring_convert < std::codecvt_utf8_utf16 < wchar_t, 0x10ffffUL, std::little_endian>> cv;
string mbs = cv.to_bytes(paste_code);  

在调试器(Visual Studio 2013)中查看mbs显示没有发生转换。 怎么了?

0 个答案:

没有答案