如何使用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++值。
发布于 2013-12-06 06:32:20
当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。
https://stackoverflow.com/questions/20417466
复制相似问题