2011-07-18 66 views
0

我有编码和解码日文字符的要求。我尝试在JAVA和它与“Cp939”编码正常工作,但我无法在.NET中找到该编码。 932编码不会对所有字符进行编码,所以我需要找到一种在.NET中实现939编码的方法。.NET中的编码问题

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); 

回答

0

这是一个错误,或者只是你怎么输入呢?

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

应该是:

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

肯定?

+0

如果我给Encoding.GetEncoding(939),它会引发错误,指出 '不支持的编码'。所以不能在939编码。 –

2

编码字节编码为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); 
+0

我试图复制java代码。如下所示convStr = new String(str8859_1.getBytes(“Cp037”),“Cp939”);新的String()默认转换为1252解码。因此我试图做同样的事情。如果我用932解码,日文字符不会被识别。我需要按照这种方式,并没有.NET中的939。 –