使用utf8proc处理std::string

process std::string with utf8proc

本文关键字:string std 处理 utf8proc 使用      更新时间:2023-10-16

我的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?!如何将其作为字符串?

当您不知道从什么转换数据时,就无法转换数据。检查数据是否是有效的UTF-8很容易,但如果你遇到的数据不是UTF-8,那么你就不知道编码的实际含义了。你必须使用层次结构来猜测编码,有时你肯定会猜错。

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