0

base64 を使用して簡易中国語 (GB2312) 文字セットを表示および更新しようとしています。Base64 から GB2312 は正常に動作していますが、GB2312 を base64 に変換できません。

String str="17DP5Mqxx+vFxNXV";
Base64 base64=new Base64();
String gb2312=new String(base64.decode(str.getBytes()),"GB2312");
System.out.println("GB2312 = "+gb2312);

String baseString=new String(base64.encode(gb2312.getBytes()));
System.out.println("Base64 = "+baseString);

実際の結果は

GB2312 = 包装箱時刻撮像

Base64 =6KOF566x5pe26K+35ouN54Wn

期待される結果は

GB2312 = 包装箱時刻撮像

Base64 = 17DP5Mqxx+vFxNXV

4

1 に答える 1

8

getBytes()文字列を GB2312 エンコーディングに変換するときは、呼び出しで文字セットを指定する必要があります。

String baseString=new String(base64.encode(gb2312.getBytes("GB2312")));

原則として (そして完全に安全を期すために)、Base64 ( ) から変換するときに行う必要がありますstr.getBytes()が、base-64 エンコーディングは US-ASCII のサブセットを使用するため、デフォルトの文字エンコーディングはおそらく問題ありません。デフォルトのエンコーディングが EBCDIC であるプラットフォームで実行している可能性があります。

于 2012-12-28T21:03:53.733 に答える