C++ c++;从二进制文件读取并转换为utf-8

C++ c++;从二进制文件读取并转换为utf-8,c++,linux,utf-8,character-encoding,binary,C++,Linux,Utf 8,Character Encoding,Binary,我想在linux上使用fread从application/octet-stream charset=binary文件读取数据,并将其转换为UTF-8编码。我尝试了iconv,但它不支持binarycharset。我还没有找到任何解决办法。有人能帮我吗 谢谢。根据您提供的MIME,您正在读取非文本二进制格式的数据。您不能使用iconv或类似工具进行转换,因为它用于将文本从一种(文本)编码转换为另一种编码。如果您的数据不是文本,那么转换为任何字符编码都是毫无意义的,只会损坏数据,但不会使其更具可读性

我想在linux上使用
fread
application/octet-stream charset=binary
文件读取数据,并将其转换为
UTF-8
编码。我尝试了
iconv
,但它不支持
binary
charset。我还没有找到任何解决办法。有人能帮我吗


谢谢。

根据您提供的MIME,您正在读取非文本二进制格式的数据。您不能使用
iconv
或类似工具进行转换,因为它用于将文本从一种(文本)编码转换为另一种编码。如果您的数据不是文本,那么转换为任何字符编码都是毫无意义的,只会损坏数据,但不会使其更具可读性


将二进制文件显示为可读文本以供检查的典型方法是。在c++中实现它有一个现有的答案:

文件中的文本是否已经采用UTF-8编码?那么就不需要做任何转换了。另外,如果你在C++中编程,为什么要使用旧的C函数?它被编码在“Apple /OctTeStChanStCube =二进制”(文件-BI文件)中。旧的C函数被使用,因为读取部分是用C写的源完成的,字符将被赋予一个C++函数,其余的函数都是C++函数。在C++方面,ICONV用于转换为UTF-8,“二进制”编码究竟是什么意思?文本数据没有标准的“二进制”编码。或者更确切地说,由于所有文件和数据最终都存储为二进制1和0,因此所有编码都可以被视为“二进制”。您确定接收到的数据实际上是一个文本文件吗?然后你需要知道实际的编码。根据打印的MIME,它似乎不是文本。这些是我在“gedit”“001007r、vÃUÍÿqKWAÆñ}ýtdG÷R]”中可以看到的字符。如果它不是文本,您不能期望将其转换为UTF-8。只有在文本环境下转换编码才有意义。