2012-12-05 1 views
5

어떻게하면 안드로이드에서 shift-JIS ( 문자열로 변환)를 디코딩 할 수 있습니까?
내가 이런 식으로 뭔가를 시도했지만 작동하지 않습니다안드로이드에서 shift-jis를 디코드하십시오.

인코딩 :

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

디코드 :

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

내가 일본의 연락처가 내 장치에 저장되어 있고 내가 일하고 백업/복원 응용 프로그램에서 연락처를 복원 할 때 정의되지 않은 문자가 표시됩니다.
은 그래서 나는 그것의 시프트-JIS와 같은 데이터베이스에 저장 생각하고 내가 제대로 인 코드/디코드 쉬프트 -을 수행 지금까지 내가 (모토로라는 4.1.1을 실행하는) 내 Android 기기에서 볼 수 있듯이 그것을

답변

2

를 디코딩 할 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 인코딩 (압축 된 데이터일까요?)이 아니거나 잘못 데이터를 가져 오는 것입니다. 데이터를 텍스트 파일로 저장할 수 있다면 브라우저에서 열어 보거나 다양한 문자 인코딩을 통해 가장 적합한 파일을 찾을 수 있습니다.