Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用c++; 将UTF-8字符写入文件?_C++_File Io_Unicode_Utf 8 - Fatal编程技术网

C++ 如何使用c++; 将UTF-8字符写入文件?

C++ 如何使用c++; 将UTF-8字符写入文件?,c++,file-io,unicode,utf-8,C++,File Io,Unicode,Utf 8,比如说,, utf-8值=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)); 无符号短数组[4

比如说,,
utf-8值=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));
无符号短数组[4]={0xc3,0x89,0xc3,0x8a};
流文件的std::of;
open(“1.txt”,std::ios\u base::binary);
write(reinterpret_cast(array),sizeof(array));
但它将
0xc3
作为单个字符,并打印其等效字符
0xc3
unicode
值。
请帮助我如何在二进制模式下使用
c++
utf-8
值写入文件

char
数组可以解决您的问题时,为什么要使用
short
数组

首先,在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序列。
无符号字符数组[4]={0xc3,0x89,0xc3,0x8a};
流文件的std::of;
open(“1.txt”,std::ios\u base::binary);
write(reinterpret_cast(array),sizeof(array));

如果数组不是UTF-8序列,而是某个字符,您可以在linux上使用
iconv
转换为UTF-8。

char
数组可以解决您的问题时,为什么要使用
short
数组

首先,在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序列。
无符号字符数组[4]={0xc3,0x89,0xc3,0x8a};
流文件的std::of;
open(“1.txt”,std::ios\u base::binary);
write(reinterpret_cast(array),sizeof(array));

如果数组不是UTF-8序列,而是某个字符,您可以在linux上使用
iconv
转换为UTF-8。

char
数组可以解决您的问题时,为什么要使用
short
数组

首先,在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序列。
无符号字符数组[4]={0xc3,0x89,0xc3,0x8a};
流文件的std::of;
open(“1.txt”,std::ios\u base::binary);
write(reinterpret_cast(array),sizeof(array));

如果数组不是UTF-8序列,而是某个字符,您可以在linux上使用
iconv
转换为UTF-8。

char
数组可以解决您的问题时,为什么要使用
short
数组

首先,在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序列。
无符号字符数组[4]={0xc3,0x89,0xc3,0x8a};
流文件的std::of;
open(“1.txt”,std::ios\u base::binary);
write(reinterpret_cast(array),sizeof(array));


如果数组不是UTF-8序列,而是某个字符,您可以在linux上使用
iconv
转换为UTF-8。

您确定要用某种解释为UTF-8的东西打开输出文件吗?对不起,我不明白,我只是用gedit.windows、macos或linux打开输出文件是什么意思?在windows中,文件开头有BOM字符,但在代码中看不到。iam使用linux@claptrapAre是否确实要用解释为UTF-8的内容打开输出文件?抱歉,我不明白,我只是用gedit.windows、macos或linux打开输出文件是什么意思?在windows中,文件开头有BOM字符,但在代码中看不到。iam使用linux@claptrapAre是否确实要用解释为UTF-8的内容打开输出文件?抱歉,我不明白,我只是用gedit.windows、macos或linux打开输出文件是什么意思?在windows中,文件开头有BOM字符,但在代码中看不到。iam使用linux@claptrapAre是否确实要用解释为UTF-8的内容打开输出文件?抱歉,我不明白,我只是用gedit.windows、macos或linux打开输出文件是什么意思?在windows中,BOM表字符位于文件的开头,在您的代码中看不到它们。我使用linux@claptrapcan u请在此处编写代码以获得上述解释。感谢@dbasican u请在此处编写代码以获得上述解释。感谢@dbasican u请在此处编写代码以获得上述解释。感谢@dbasican u请在此处编写代码以获得上述解释。感谢@dbasic