在android中解码shift-jis

时间:2012-12-05 13:05:58

标签: android shift-jis

如何在android中解码shift-JIS(将其转换为字符串)? 我尝试过类似的东西,但它没有工作

编码:

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

解码:

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

我的设备中保存了日语联系人,当我恢复联系人显示未定义的字符时,我正在处理备份/恢复应用程序。
所以我认为它在数据库中保存为Shift-JIS,我想解码它

1 个答案:

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