2015-01-30 6 views
1

일부 도구는 일본어 내용을 바이트 배열로 보내고 있습니다.바이트 배열을 일본어 문자로 변환하는 방법

그래서 자바를 사용하여 바이트 배열을 읽고 일본어 컨텐츠를 표시해야합니다.

나는 이것을 달성하기위한 아이디어를 얻지 못하고있다.

String s= "業界支出TXT_20150130170955"; 
    byte b1[]; 
    try { 
     b1 = s.getBytes(); 
     for (int j=0;j<b1.length; j++){ 
      System.out.println(b1[j]+"-----------"+(char)b1[1]); 
     } 
    } catch (UnsupportedEncodingException e2) { 
     // TODO Auto-generated catch block 
     e2.printStackTrace(); 
    } 

지금이 좀 정크 데이터를 제공합니다

은 지금까지 난 그냥이 변환이 어떻게 작동하는지 확인하기 위해 아래에 언급 된 프로그램을 시도했다. 나는이 일을 완전히 잘못하고 있음을 알고 있지만, 일본어 문자를 바이트 스트림으로 읽을 생각이 없습니다.

도움을 주시면 감사하겠습니다.

편집 : 우리는에서 일본어 CHARS를 얻을 필요가 1

"디코딩"바이트 배열 내가하려고 다음과 같은 사항 :

byte[] decoded = Base64.decodeBase64("qzD8MMkwGk/hVClSKHWCaYGJCP/GMK0wuTDIMAn/DQAKAA0ACgApUih1xzD8ML8w1lOXX+VlfgCgUt92l15qdfdTfgCgUt92l15+AClSKHVzijB9fgAakKiMfgB+AKsw/DDJMBpP4VQNVE1Sfg=="); 
     try { 
      System.out.println(new String(decoded, "UTF-8") + "\n"); 
System.out.println(new String(decoded, "SHIFTJIS") + "\n"); 
     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

하지만 우리는 PLS는

을 advide 예상 결과를 얻지 못하고있다
+0

비슷한 질문을 여기에 : http://stackoverflow.com/questions/4067628/ 당신은 이름 캐릭터 세트의을 제공해야 사용 방법 - 중국어 및 일본어 문자 - 문자열 - 자바 –

답변

2

바이트 배열을 String으로 변환하려면 String(byte[] bytes, Charset charset) 생성자를 사용해야합니다.

바이트를 문자 시퀀스로 올바르게 디코딩하려면 바이트를 해석 할 문자 인코딩을 알아야합니다. 가장 일반적인 것은 UTF-8입니다.

예 :

// Bytes of UTF-8 encoded Japanese word: "そこ" (there) 
byte[] data = new byte[]{-29, -127, -99, -29, -127, -109}; 

String s = new String(data, StandardCharsets.UTF_8); 
System.out.println(s); 

출력 :

String s = "そこ"; 
byte[] data = s.getBytes(StandardCharsets.UTF_8); 
System.out.println(Arrays.toString(data)); 

: 역순 (String =>byte[])가
byte[] String.getBytes(Charset charset) 방법으로 달성 될 수 있다는

そこ 

참고 어떤 지문 :

[-29, -127, -99, -29, -127, -109] 

최종 주

피 만 바이트 배열없이 캐릭터 걸리는 String 생성자 때문에 변환 Stringbyte[] 또는 다른 방법에 매개 변수가없는 String.getBytes() 방법을 사용하여, 인코딩이 필요합니다. 인코딩을 지정하지 않아도 플랫폼에 따라 달라질 수있는 플랫폼의 기본 인코딩이나 심지어 실행 간 (run-to-run)에서 코드가 포팅되지 않게됩니다 (differnet 컴퓨터에서 다르게 작동 할 수 있음) .

자바에 대한

이전에

당신이 자바 7.0 이전을 사용하는 경우 7.0, 당신은 생성자와 String로 문자 집합을 소요하지 않는 Charset으로 getBytes() 방법을 사용할 수 있습니다.

String(byte[] bytes, String charsetName)

byte[] getBytes(String charsetName)

예 :

// From String to byte array: 
byte[] data = s.getBytes("UTF-8"); 

// From byte array to String: 
String s = new String(data, "UTF-8"); 
+0

귀하의 솔루션은 문제의 절반을 해결했습니다. 하지만 여전히 바이트 배열로 데이터를 가져 오는 또 다른 문제가 붙어 있습니다. 그래서 어떻게 바이트 배열을이 바이트 포맷으로 변환 할 수 있나요? -getBytes (StandardCharsets.UTF_8); – Onki

+0

@ user3610891'getBytes()'메소드는 이미 생성 된'String' 객체를 바이트로 변환하는 데 사용됩니다. 바이트 배열을 가지고 있다면 생성자'String (byte [] bytes, Charset charset)'을 사용하여'String' 객체를 생성 할 수 있습니다. – icza

+0

안녕하세요 @ icza, 도움 주셔서 감사합니다! StandardCharsets는 Java 1.7에서만 지원됩니다. 따라서 java 1.6v에서 동일한 구현을 얻도록 도와주십시오. 다시 당신의 도움에 감사드립니다. – Onki

관련 문제