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