如何使用c ++将utf-8字符写入文件?
例如,
utf-8 value=0xc389
如果我以二进制模式将其写入文件,我必须看到字符。
到目前为止,我已尝试过以下
unsigned short array[4]={0xc3,0x89,0xc3,0x8a};
std::ofstream file;
file.open("1.txt", std::ios_base::binary);
file.write(reinterpret_cast<char const*>(array),sizeof(array));
但它需要0xc3
作为单个字符,并打印其0xc3
unicode
值的等效字符。
帮助我如何在二进制模式下使用utf-8
将c++
值写入文件
答案 0 :(得分:3)
为什么在short
数组解决您的目的时使用char
数组?
首先,在UTF-8中,您逐字节写入。如果序列是有效的UTF-8字节序列,则逐字节写入它们。
如果是unicode字符,首先将字符流转换为UTF-8字符,因为超出0x7f的字符将被区别对待。
//I assume this a valid UTF-8 sequence.
unsigned char array[4]={0xc3,0x89,0xc3,0x8a};
std::ofstream file;
file.open("1.txt", std::ios_base::binary);
file.write(reinterpret_cast<char const*>(array),sizeof(array));
如果数组不是UTF-8序列而是某个字符,则可以在linux上使用iconv
转换为UTF-8。