【发布时间】:2011-08-02 20:13:44
【问题描述】:
我使用日语字符串作为wchar_t,我需要将其转换为char*。有什么方法或函数可以将wchar_t* 转换为char* 而不会丢失数据?
【问题讨论】:
-
您使用什么语言? C?
我使用日语字符串作为wchar_t,我需要将其转换为char*。有什么方法或函数可以将wchar_t* 转换为char* 而不会丢失数据?
【问题讨论】:
您需要调用WideCharToMultiByte 并传入所需的日语多字节编码的代码页编码标识符。有关该功能,请参阅 MDSN。在 Windows 上,本地多字节集是 CP932,即 ShiftJIS 上的 MS 变体。但是,您可能希望将 UTF-8 发送给需要它的人。
【讨论】:
仅仅说“我有一个字符串为wchar_t”是不够的。你还必须知道字符串的字符在什么编码中。这是可能 UTF-16,但你需要明确知道。
仅仅说“我想转换为char”也是不够的。再次,您必须决定字符将以何种编码表示。JIS? Shift-JIS?欧盟委员会? UTF-8?另一种编码?
如果您知道以上两个问题的答案,则可以使用WideCharToMultiByte 毫无问题地进行转换。
【讨论】:
您首先要做的是选择字符串编码,例如 UTF-8 或 UTF-16。然后,使用您通过libiconv 或其他类似字符串编码库选择的编码对您的wchar_t[] 字符串进行编码。
【讨论】: