으.. 역시나 한글은 문제를 일으키는구나... ㅎ
전문 통신할 때는 약속된 길이 만큼 정확하게 보내줘야 합니다. 그렇지 않으면... 항상 문제를 일으키고는 하죠.. 뭐 한글이 문제는 아니지만요 ㅎ
보통 format을 맞추는 가장 쉬운 방법은 다음아래와 같습니다.
communication의 원래 값 포함해서 Length가 200인 String을 return한다.
물론 String.format이 이런 식으로 원하는 Length만큼 format을 만들어 주기는 하지만 원래 목적은 이런게 아닌듯 싶다. 하지만 전문 통신할 때 이렇게 사용하면 굉장히 편리하다.
아래는 전문 통신하기 위해서 String length 100을 만들어 주는 소스이다.
String.format("%-12s", a) +
String.format("%-6s", b)+
String.format("%-22s", c) +
String.format("%-60s", d);
이렇게 하면은 정확히 String length 100으로 보내게 된다.
하지만 어제 문제가 일어 났던 이유는 한글 사용 때문이며, 서버측이 c언어라서 문제가 발생했다.
System.out.println(a.length); <- String length 3
System.out.println(a.getBytes().length); <- byte length 6
실행결과
3
6
문제가 일어난 원인은 위 소스와 같다.
한글은 2bytes 이므로 String length를 체크하게 되면은 "김태정"의 length는 3이 되지만, c언어에는 String이 없으므로 6이 된다.
'CodeIN > Java' 카테고리의 다른 글
| [java] Excel 파일 읽기 xls, xlsx (9) | 2010/02/01 |
|---|---|
| [log4j] package 별로 로그 남기기 (1) | 2009/12/19 |
| [java] String format 그리고 한글 (0) | 2009/12/19 |
| [log4j] Log4j HTML TABLE (0) | 2009/12/13 |
| [log4j] ConversionPattern (0) | 2009/12/12 |
| [log4j] log4j.properties 설정 (0) | 2009/12/11 |


