2011-07-18 11 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はありません。 –