使用utf8proc处理std :: string

时间:2013-01-18 16:11:29

标签: c++ utf-8

我的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类型的?我怎么把它作为字符串?

1 个答案:

答案 0 :(得分:0)

如果您不知道要从中转换数据,则无法转换数据。检查数据是否有效UTF-8很容易,但如果您遇到的数据不是UTF-8,那么在不知道编码实际情况的情况下,您运气不好。你必须使用hieristics来猜测编码,你有时会猜错。

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