【问题标题】:How can I convert a wchar_t* to char* without losing data?如何在不丢失数据的情况下将 wchar_t* 转换为 char*?
【发布时间】:2011-08-02 20:13:44
【问题描述】:

我使用日语字符串作为wchar_t,我需要将其转换为char*。有什么方法或函数可以将wchar_t* 转换为char* 而不会丢失数据?

【问题讨论】:

  • 您使用什么语言? C?

标签: c++ unicode char wchar-t


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    仅仅说“我有一个字符串为wchar_t”是不够的。你还必须知道字符串的字符在什么编码中。这是可能 UTF-16,但你需要明确知道。

    仅仅说“我想转换为char”也是不够的。再次,您必须决定字符将以何种编码表示。JIS? Shift-JIS?欧盟委员会? UTF-8?另一种编码?

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 你好 minhee,你能简单介绍一下你提供的答案吗
      猜你喜欢
      • 2020-11-20
      • 1970-01-01
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      • 2018-01-07
      • 2011-03-14
      • 2021-01-29
      相关资源
      最近更新 更多