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

时间:2018-01-31 20:00:16

标签: c++

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

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

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);

但是,当我尝试使用中文或韩文(将多个符号组合成一个字符的语言)时,当客户收到它时会出现乱码。

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

例如,使用此中文文本&#34;防身刀&#34;,总大小应为6,十六进制输出应为

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

我的问题是我不知道如何确定角色是否由多个符号组成。把它分成符号......

1 个答案:

答案 0 :(得分:0)

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