0

データベースから簡体字(GB2312)をフェッチして更新しようとしていますが、更新部分は weblogic 10.3 Windows マシンでは正常に動作しますが、weblogic 10.3 Solaris マシンでは失敗 (ジャンク文字) しますが、中国語のフェッチと表示は正常に動作しています両方の環境

DAO の取得

  while (rs.next()) {           
                    Base64 base64 = new Base64();
                    byte[] notesByte = base64.encode(rs
                            .getBytes("notes"));                
    }

UI(アンドロイド)

     byte[] notes= Base64.decode(notesByteStr , Base64.DEFAULT);
       notesText.setText(new String(notes, "GB2312")); // Displaying chines char

     notesByte=  Base64.encode(notesText.getText().toString().trim().getBytes("GB2312"),  Base64.DEFAULT) // send to db 

DAO の更新

 getSession().createSQLQuery(notesUpdateQuery)
                    .setParameter(0, new String(base64.decode(notesByte)))
                    .executeUpdate();

: ソース txt ファイルのエンコード : UTF-8

4

1 に答える 1

1

はい、更新 DAO でこれを見てください。

new String(base64.decode(notesByte))

これは、プラットフォームのデフォルトのエンコーディングを使用して、base64 でデコードされたバイト配列を文字列に変換しています。base64 でデコードされたバイト配列は、実際には GB2312 でエンコードされたテキストであり、プラットフォームのデフォルトのエンコードではありません。

適切に変換するには、どこでも同じエンコーディングを指定する必要があります。

new String(base64.decode(notesByte), "GB2312")
于 2013-01-04T13:59:03.670 に答える