如何在vb.net中使用MultiByteToWideChar?

时间:2018-02-28 07:20:45

标签: vb.net utf-8 character-encoding utf-16

我需要将“ÖÐÎÄ°æ²âÊÔ”转换成汉字“中文版测试”。 我看到c ++ MultiByteToWideChar的这个函数:

MultiByteToWideChar(
    CP_UTF8,            // convert from UTF-8
    0,                  // default flags
    utf8.data(),        // source UTF-8 string
    utf8.length(),      // length (in chars) of source UTF-8 string
    &utf16[0],          // destination buffer
    utf16.length()      // size of destination buffer, in wchar_t's
    )

但我如何将其用于vb.net?

1 个答案:

答案 0 :(得分:0)

在逆向工程(猜测)部门,我的机器上有.NET可访问的编码组合,可以解码此示例

Dim mojibake = "ÖÐÎÄ°æ²âÊÔ"
Dim text = "中文版测试"
Dim possibilities = 
    From mojibakeEncoding In Encoding.GetEncodings()
    Let orginalBytes = mojibakeEncoding.GetEncoding().GetBytes(mojibake)
    From originalEncoding In Encoding.GetEncodings()
    Where originalEncoding.GetEncoding().GetString(orginalBytes) = text
    Select New With { 
        .mojibakeEncoding = $"{mojibakeEncoding.Name}", 
        .originalEncoding = $"{originalEncoding.Name}" }
possibilities.Dump()

LINQPad代码)

请记住,不同的样本可能会给出不同的结果,因此最好弄清楚如何创建mojibake。理想情况下,您将不再使用字符编码来存储二进制数据。您可以改用Base64。