是否可以使用std :: fstream来使包含UTF-8编码的std :: string可以传输到UTF-16文件?使用std :: fstream编写UTF16文件
我尝试使用UTF8到UTF16面以下,但结果文件仍然是UTF-8:
std::fstream utf16_stream("test.txt", std::ios_base::trunc | std::ios_base::out);
utf16_stream.imbue(std::locale(std::locale(), new codecvt_utf8_utf16<wchar_t,
std::codecvt_mode(std::generate_header | std::little_endian)>);
std::string utf8_string = "\x54\\xE2\x83\xac\x73\x74";
utf16_stream << utf8_string;
的参考codecvt_utf8_utf16方面似乎表明它可以用来读取和写入UTF-8文件,而不是UTF-16 - 是否正确,如果有的话,是否有一种简单的方法可以做我想做的事情?
使用UTF-8内部和UTF-16外部是不正确的。如果UTF-16有意义的话,它就像是一种内部编码,可以简化所有那些误导性足以使用UTF-16的90年代原生API。 – bames53
@ bames53 - 要求与Windows应用程序的兼容性,不幸的是读取和写入“UTF16LE”文件(尽管考虑到过去几周遇到的困难的数量,它们可能实际上是某种微软UCS2-ish憎恶)。 –