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

How can I convert a wchar_t* to char* without losing data?

本文关键字:wchar 转换 char 情况下 数据      更新时间:2023-10-16

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

这是不够的,说"我有一个字符串作为wchar_t "。还必须知道字符串的字符所处的编码。这可能是 UTF-16,但您需要明确地知道。

这也不够说"我想转换为char"。同样,您必须决定将以哪种编码表示字符。JIS吗?shift - jis吗?EUC吗?utf - 8 ?另一个编码?

如果您知道上面两个问题的答案,您可以使用WideCharToMultiByte进行转换,而不会出现任何问题。

首先要做的是选择字符串编码,如UTF-8或UTF-16。然后,通过libiconv或其他类似的字符串编码库将wchar_t[]字符串编码为您选择的编码。

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