2012-12-05 13 views
5

Jak mogę dekodować shift-JIS (przekonwertować go na ciąg) w systemie Android?
Próbowałem coś takiego, ale to nie działadekodowanie shift-j w Androidzie

zakodować:

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

dekodowania:

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

mam japońskie kontakty zapisane w urządzeniu, a ja pracuję na tworzenie kopii zapasowej/przywracania aplikacji po przywróceniu kontaktów wyświetla niezdefiniowane znaki.
więc myślę, że jego zapisywane w bazie danych jako Shift-JIS i chcę, aby dekodować go

Odpowiedz

2

O ile widzę na moim urządzeniu z Androidem (Motorola Razr działa 4.1.1) robi poprawnie kodowania/dekodowania Shift- JIS. Poniższy kod testu

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) { 

    } 

wyjścia

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

więc możemy zobaczyć do kodowania i dekodowania działa. Jeśli utworzysz zwykły plik tekstowy zawierający ten sam zestaw bajtów, możesz potwierdzić, że jest to kodowanie Shift-JIS przez np. przeglądanie go w przeglądarce, co pozwoli ci wybrać kodowanie znaków.

Jeśli widzisz niezdefiniowane znaki, sugeruje to, że nie ma kodu Shift-JIS (być może jest to skompresowane dane?) Lub niepoprawnie wyciągasz dane. Jeśli możesz zapisać dane jako plik tekstowy, najprościej jest po prostu spróbować otworzyć go w przeglądarce i przechodzić przez różne kodowania znaków, aż znajdziesz właściwy.