如何在android中解码shift-jis(将其转换为字符串)?
我试过这样的东西,但没用
编码:

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

译码:
String decoded = new String(bytes, "Shift_JIS");

我的设备中保存了一个日语联系人,我正在使用备份/还原应用程序还原联系人时,它显示未定义的字符。
所以我认为它保存在数据库中作为shift-jis,我想解码它

最佳答案

据我在我的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编码(可能是压缩数据?)或者你提取的数据不正确。如果您可以将数据保存为文本文件,那么在浏览器中尝试打开它并进行各种字符编码直到找到正确的编码可能是最快的。

07-26 07:34