确定字符串的字符集

时间:2014-01-13 11:02:18

标签: c++ utf-8

默认情况下,我机器中的std :: string是GBK,我在程序中写的字符串是用gbk编码的,但有时候我从服务器上读取数据,数据用UTF-8编码,我想确定chatacter设置字符串正在使用。我看到了utf-8和gbk编码方法,很难自己完成它。

1 个答案:

答案 0 :(得分:1)

要检查std::string是否包含UTF-8内容,请将其解码为UTF-8并查看其是否失败。

要检查std::string是否包含GBK,请将其解码为GBK并查看其是否失败。

有大量可用的转换库,例如ICONVICU,它们通常在大多数平台上预先安装。或者使用特定于平台的API,例如Windows上的MultiByteToWideChar()(代码页936和54936涵盖GBK,代码页65001涵盖UTF-8)。

或者只编写自己的解码器(UTF-8只需要几十行代码)。您可以在维基百科上找到有关UTF-8GBK的位布局的详细信息。