如何将包含中文或韩语的字符串转换为十六进制/字节



我有一个程序,需要能够制作英语、中文或韩语单词的十六进制表示形式(取决于用户的语言选择(并将其存储在缓冲区中。

通过执行以下操作,我很容易用英文字符做到这一点......

const std::wstring word_sample = "SampleWord";  
const int size = static_cast<int>(word_sample.size());
AddDataToBuffer(reinterpret_cast<const unsigned char*>(&stringSize), sizeof(size));
AddDataToBuffer(reinterpret_cast<const unsigned char*>(word_sample .c_str()), size);

但是,当我尝试使用中文或韩语(将多个符号组合成一个字符的语言(执行此操作时,当客户收到时,它显示为胡言乱语。

我发现这是因为我需要将每个符号(而不是每个字符(转换为缓冲区的十六进制。

所以比如这个中文文本"防身刀",总大小应该是6,十六进制输出应该是

0xb7, 0xc0, 0xc9, 0xed, 0xb5, 0xb6

我的问题是我不知道如何实际确定一个字符是否由多个符号组成并将其拆分为符号......

如果有人遇到类似的情况...就我而言,我必须使用 UTF-8 编码将值存储在 wstring 中。然后,我将 wstring 转换为字符串,并提供了特定于所需语言的代码页。

最新更新