안드로이드 개발 질문/답변
(글 수 45,052)
한글로 사이드카인데, activeMQ에서 받으니까 저렇게 나와버리는데, 이걸 한글로 표시할 방법은 없나요?
2010.09.07 11:17:33
제가 설명을 잘못 드린 부분이 있네요.
&#뒤에 숫자가 의미하는 케릭터 코드는 모두 UTF-16 케릭터셋 기준인거 같습니다.
심심해서 만들어 본 소스입니다.
잘 포장해서 펑션화 해서 쓰시면 좋겠네요.
질문에 사용 하셨던사이드카 는 "사이드카" 라고 나오는군요.
&#뒤에 숫자가 의미하는 케릭터 코드는 모두 UTF-16 케릭터셋 기준인거 같습니다.
심심해서 만들어 본 소스입니다.
잘 포장해서 펑션화 해서 쓰시면 좋겠네요.
String src="변환할 문자열 사이드카"; Pattern ptn = Pattern.compile("\\&#([0-9]+)\\;"); Matcher mch = ptn.matcher(src); StringBuffer sb = new StringBuffer(); String charset = "utf-16"; byte[] bt = new byte[2]; mch = ptn.matcher(src); while (mch.find()) { int chcode; chcode = Integer.parseInt(mch.group(1)); bt[1] = (byte)(chcode & 0xff); bt[0] = (byte)((chcode >> 8) & 0xff); mch.appendReplacement(sb, new String(bt, charset)); } mch.appendTail(sb); System.out.println(sb)
질문에 사용 하셨던사이드카 는 "사이드카" 라고 나오는군요.
해당 숫자들을 byte[]로 변환한 다음에 new String(byte[], 케릭터셋) 으로 생성하시면 됩니다만.
숫자를 byte[]로 변환하는 과정은 숫자 & 0xFF 하위 바이트 (숫2자 >> 8) & 0xFF가 상위 바이트 식일꺼라고 생각하는데요.(언뜻 생각한거라 틀릴수도 있습니다.)
실제로 해보시면서 숫자를 두개의 바이트 쌍으로 변환하고 그 쌍들을 조립하여 byte[]로 만드는 과정이 관건이겠습니다.