5

androidでshift-JISをデコード(文字列に変換)するにはどうすればよいですか?
私はこのようなことを試しましたが、うまくいきません

エンコード:

String test = "some text";
byte[] bytes = test.getBytes("Shift_JIS");

デコード:

String decoded = new String(bytes, "Shift_JIS");

デバイスに日本語の連絡先を保存していて、連絡先を復元すると未定義の文字が表示されるバックアップ/復元アプリケーションで作業しています。
だから私はそれがShift-JISとしてデータベースに保存されていると思いますそして私はそれをデコードしたいと思います

4

1 に答える 1

2

私のAndroidデバイス(4.1.1を実行しているMotorola Razr)で見る限り、Shift-JISを正しくエンコード/デコードします。次のテストコード

    try {
        String test = "インターネットをもっと快適に";
        byte[] bytes = test.getBytes("Shift_JIS");
        byte[] inShiftJis = {
                -125, 67, -125, -109, -125, 94, -127, 91, -125, 108, -125, 98, -125, 103, -126,
                -16, -126, -32, -126, -63, -126, -58, -119, -11, -109, 75, -126, -55
        };

        String decoded = new String(bytes, "Shift_JIS");
        String fromShiftJis = new String(inShiftJis, "Shift_JIS");
        Log.d(LOG_TAG, decoded);
        Log.d(LOG_TAG, fromShiftJis);
    } catch (UnsupportedEncodingException e) {

    }

出力

03-06 10:09:25.733: D/MainActivity(3490): インターネットをもっと快適に
03-06 10:09:25.733: D/MainActivity(3490): インターネットをもっと快適に

エンコードとデコードが機能していることがわかります。同じバイトセットを含むプレーンテキストファイルを作成する場合、たとえばブラウザで表示することにより、これがShift-JISエンコーディングであることを確認できます。これにより、文字エンコーディングを選択できます。

したがって、未定義の文字が表示されている場合は、Shift-JISエンコーディングではない(おそらく圧縮データですか?)か、データを誤って引き出している可能性があります。データをテキストファイルとして保存できる場合は、ブラウザでデータを開いて、適切な文字コードが見つかるまでさまざまな文字コードを調べてみるのが最も簡単な場合があります。

于 2013-03-06T10:23:27.890 に答える