确定字符串的字符集

Determine the character set of string

本文关键字:字符集 字符串      更新时间:2023-10-16

默认情况下,我机器中的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的位布局的详细信息。