确定字符串的字符集
Determine the character set of string
默认情况下,我机器中的std::字符串是GBK,我在程序中编写的字符串是用GBK编码的,但有时我从服务器接收数据,数据是用UTF-8编码的,我想确定字符串使用的是哪个聊天器集。我看到了utf-8和gbk的编码方法,很难自己完成。
若要检查std::string
是否包含UTF-8内容,请将其解码为UTF-8并查看是否失败。
要检查std::string
是否包含GBK,请将其解码为GBK并查看是否失败。
有很多转换库可用,如ICONV和ICU,它们通常预装在大多数平台上。或者使用特定于平台的API,如Windows上的MultiByteToWideChar()
(GBK由代码页936和54936涵盖,UTF-8由代码页65001涵盖)。
或者只需编写自己的解码器(UTF-8只需要几十行代码)。您可以在维基百科上找到有关UTF-8和GBK的位布局的详细信息。