2011-07-18 112 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。 –