如何在不丢失数据的情况下将wchar_t *转换为char *?

时间:2011-04-11 07:12:37

标签: c++ unicode char wchar-t

我使用日语字符串作为wchar_t,我需要将其转换为char*。是否有任何方法或功能可以将wchar_t*转换为char*而不会丢失数据?

3 个答案:

答案 0 :(得分:7)

仅仅说“我的字符串为wchar_t”是不够的。您还必须知道字符串字符所在的编码。这可能是 UTF-16,但你必须明确知道。

仅仅说“我想转换为char”还不够。同样,您必须决定字符的编码方式.JIS?按住Shift-JIS? EUC? UTF-8?另一种编码?

如果您知道上述两个问题的答案,则可以使用WideCharToMultiByte毫无问题地进行转换。

答案 1 :(得分:2)

首先要做的是选择字符串编码,例如UTF-8或UTF-16。然后,使用libiconv或其他类似的字符串编码库对您选择的编码中的wchar_t[]字符串进行编码。

答案 2 :(得分:2)

您需要调用WideCharToMultiByte并传入所需日语多字节编码的代码页编码标识符。有关该功能,请参阅MDSN。在Windows上,本地多字节集是CP932,即ShiftJIS上的MS变体。但是,您可能会想要将UTF-8发送给想要它的人。