'java'에 해당되는 글 5건

  1. 2020.11.11 getBytes, toString 차이
Java2020. 11. 11. 14:55

 

 

 

자바 API를 많이 다뤄보지 않은 사람이 하기 쉬운 실수가 있다. 

바로 getBytes() 와 toString() 의 차이를 제대로 알지 못하고 쓸 수 있다는것인데,

예를들면 이런거다.

 

 

byte[] byteArray = new byte[8];
byteArray = //Do Something...
String resultStr = new String(byteArray, "UTF-8");

 

 

UTF-8로 캐릭터셋을 지정하고 싶은거라면, 절대 UTF-8로 캐릭터셋이 변환되지 않는다.

이제 차이점을 본격적으로 말하자면,

getBytes()는 유니코드 문자열을 인자로 지정한 캐릭터셋의 바이트배열로 반환하는 것이고, 

new String(byteArray, "캐릭터셋")은 해당 바이트 배열을 주어진 캐릭터 셋으로 간주하고 스트링을 만든다.

캐릭터 변환한다고 new String(...)을 쓰면 절대 안된다는 소리다. 

자바 내부에서 처리하는 문자열은 모두 같은 유니코드 형식으로 처리하고,

다른 문자열 처리가 필요한 경우에는 getBytes("캐릭터셋")로 해당 문자열 바이트 배열로 변환을 하여야 한다.

아래와 같이 변환하는게 맞다.

 

 

String str = "사슴은 초식동물";
// 유니코드 문자열을 UTF-8 캐릭터 바이트배열로 변환
byte[] testStrUTF8 = str.getBytes("UTF-8");
// 유니코드 문자열을 EUC-KR 캐릭터 바이트배열로 변환
byte[] testStrEUCKR = str.getBytes("EUC-KR");

//Do Something ...

 

 

 

많이 안해봣을땐 헷갈릴 수 있다!잘 알고 이용할것!

 

 

'Java' 카테고리의 다른 글

이클립스 switch문을 if문으로  (0) 2020.11.11
바이트배열을 헥사값으로 변환  (0) 2020.11.11
Unsupported major.minor version 52.0 오류 수정  (0) 2020.11.11
Map을 Json으로 - Gson  (0) 2020.11.07
java byte order 변경 메소드  (0) 2020.11.07
Posted by 사슴영혼'-'