如何在android中解码shift-JIS (将其转换为字符串)?
我试过这样的方法,但不起作用
编码:
String test = "some text";
byte[] bytes = test.getBytes("Shift_JIS");解码:
String decoded = new String(bytes, "Shift_JIS");我有一个日文联系人保存在我的设备中,当我还原联系人时,我正在处理备份/恢复应用程序,它显示了未定义的字符.
所以我认为它保存在数据库中作为Shift-JIS和我想要解码它。
发布于 2013-03-06 10:23:27
据我所见,在我的Android设备(运行4.1.1的摩托罗拉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编码(也许它是压缩数据?)或者你不正确地提取数据。如果您可以将数据保存为文本文件,只需尝试在浏览器中打开它,并遍历各种字符编码,直到找到正确的字符编码,这可能是最快的。
https://stackoverflow.com/questions/13723917
复制相似问题