我有一个程序需要能够使用英文,中文或韩文单词的十六进制表示(取决于用户语言选择)并将其存储在缓冲区中。
通过以下操作,我很容易用英文字符做到这一点......
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
我的问题是我不知道如何确定角色是否由多个符号组成。把它分成符号......
答案 0 :(得分:0)
如果有人遇到类似情况......在我的情况下,我必须使用UTF-8编码将值存储在wstring中。然后,我将wstring转换为字符串,并提供了一个特定于我需要的语言的代码页。