使用utf8proc处理std::string
process std::string with utf8proc
我的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。
相关文章:
- cppcheck在const std::string[]上引发警告
- 将std::string传递给WriteConsole API
- 为std::string的某个索引赋值
- std中有类似find_last_of的函数,而string中没有
- 使用 std::string () const 函数启动线程或未来
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- 如何更改大小(std::string)
- std::string 的对象真的可以移动吗?
- SegFault 同时使用 std::string::operator+= 和函数作为参数
- 无法从 std::string 中提取C++ Unicode 符号
- std::string 构造函数如何处理固定大小的 char[]?
- 确切地说,如何解释 std::getline(stream, string) 函数在C++中填充的字符串
- C++:考虑C++ std::string 中双引号 (") 的字面含义,而不使用反斜杠 (\)
- 'int main(int, int, std::__cxx11::string, std::__cxx11::string)'只需要零或两个参数 [-Wmain]
- C++ 在列表和列表之间选择返回类型<<string>std::p air<string,string>>
- std::string, std::wstring and UTF8
- uan inplace replacement of std::string/std::wstring?
- #define Glib::string std:wstring
- 从 std::string & std::wstring 中获取 char 整数值
- BSTR转换为std::string(std::wstring),反之亦然