【问题标题】:Encoding issue in .NET.NET 中的编码问题
【发布时间】:2011-07-18 12:06:05
【问题描述】:

我需要对日文字符进行编码和解码。我在 JAVA 中尝试过,它在“Cp939”编码中运行良好,但无法在 .NET 中找到该编码。 932 编码不会对所有字符进行编码,因此我需要找到一种在 .NET 中实现 939 编码的方法。

Java 代码:

convStr = new String(str8859_1.getBytes("Cp037"), "Cp939");

.NET:

bytesConverted = Encoding.Convert(Encoding.GetEncoding(37),
                                  Encoding.GetEncoding(932), bytesConverted);
// This result is a junk of characters and is totally different
// from the expected output 'ニツポンバ'
convStr = Encoding.GetEncoding(1252).GetString(bytesConverted);

【问题讨论】:

    标签: c# unicode encoding


    【解决方案1】:

    编码后的字节在编码932中,那为什么在将编码后的字节转换为字符串时使用编码1252呢?

    以下应该有效:

    bytesConverted = Encoding.Convert(Encoding.GetEncoding(37),
                                      Encoding.GetEncoding(932), bytesConverted);
    // This result is a junk of characters and is totally different
    // from the expected output 'ニツポンバ'
    convStr = Encoding.GetEncoding(932).GetString(bytesConverted);
    

    【讨论】:

    • 我正在尝试复制 java 代码。正如你在下面看到的 convStr = new String(str8859_1.getBytes("Cp037"), "Cp939"); new String() 默认转换为 1252 解码。因此,我试图做同样的事情。如果我用 932 解码,则无法识别日文字符。我需要遵循这种方式并且在.NET中没有939。
    【解决方案2】:

    这是一个错误还是只是你输入的方式?

    bytesConverted = Encoding.Convert(Encoding.GetEncoding(37), 
        Encoding.GetEncoding(932), bytesConverted);
    

    应该是:

    bytesConverted = Encoding.Convert(Encoding.GetEncoding(37), 
        Encoding.GetEncoding(939), bytesConverted);
    

    确定吗?

    【讨论】:

    • 如果我给出 Encoding.GetEncoding(939),它会抛出错误,指出“不支持的编码”。所以无法在 939 中编码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 2011-04-12
    • 2012-09-30
    • 2016-08-14
    • 2011-02-18
    相关资源
    最近更新 更多