【发布时间】:2014-10-26 19:40:54
【问题描述】:
我想在 linux 上用fread 从application/octet-stream charset=binary 文件中读取数据并将其转换为UTF-8 编码。我尝试使用iconv,但它不支持binary 字符集。我还没有找到任何解决方案。谁能帮帮我?
谢谢。
【问题讨论】:
-
文件中的文本是否已经采用 UTF-8 编码?那么就不需要进行任何类型的转换。另外,如果您使用 C++ 编程,为什么要使用旧的 C 函数?
-
它被编码在“application/octet-stream charset=binary”(文件-bi文件)中。使用旧的 C 函数,因为读取部分是用 C 编写的源代码完成的,字符将在之后交给一个 C++ 函数来完成其余的工作。在 C++ 端,iconv 用于转换为 UTF-8。
-
“二进制”编码到底是什么意思?文本数据没有标准的“二进制”编码。或者更确切地说,由于所有文件和数据最终都存储为二进制 1 和 0,因此 all 编码可以被认为是“二进制”。您确定接收到的数据实际上是文本文件吗?然后你需要知道实际的编码。
-
根据打印的 MIME,它似乎不是文本。这些是我可以用“gedit”“001007r¢vÃUÍÿqKWAÆñ}ýtdG÷R]”看到的字符。
-
如果不是文本,你不能期望将它转换为 UTF-8。转换编码只有在文本环境下才有意义。
标签: c++ linux utf-8 character-encoding binary