0

我的 C++ 代码中有一个 std::string 标题。不幸的是,我不知道该标题的编码,有时可能会有所不同,但并不总是 utf8。但是,由于我需要使用 pp:Var (https://developers.google.com/native-client/peppercpp/classpp_1_1_var) 发送它,因此我需要将其转换为有效的 utf8。
所以我尝试通过utf8proc(http://www.public-software-group.org/utf8proc-documentation)转换它。我想我应该使用 utf8proc_iterate 函数,但我不明白为什么该函数的输出是 int 类型的?!我如何将它作为字符串?

4

1 回答 1

0

当您不知道从什么转换数据时,您无法转换数据。检查数据是否为有效的 UTF-8 很容易,但如果遇到不是 UTF-8 的数据,那么您就不走运了,不知道编码实际上是什么。您将不得不使用分级法来猜测编码,而且您有时肯定会猜错。

utf8proc_iterate()返回 anint32_t因为它正在遍历已经 UTF-8 编码的数据并将其解码为未编码的 Unicode 代码点,其大小为 21 位(计算机没有 21 位整数类型,因此使用 32 位整数)。要使用 utf8proc(或任何其他编码)将数据编码为 UTF-8,您必须首先从未编码的 Unicode 代码点的数据开始。要获得这些,您必须知道原始数据的编码方式,以便您可以将其属性解码为 Unicode,然后再将其重新编码为 UTF-8。

于 2013-01-19T02:14:14.493 回答