윈도우에서 잘 돌아갔던 자바 프로그램을
우분투 리눅스에서 돌려봤다.

java가 플랫홈인디팬던트언어니 문제 없이 잘 돌아갈거라 생각했었다
그런데 으응?

프로그램상에서 출력하는 부분은 한글이 잘 나오는데,
소켓으로 주고받는곳에서 이상하게 깨져나왔다 @.@

한참을 삽질했다 ..

하다하다 안되서 어떤분에게 물어봤더니
getBytes() 에 캐릭터셋을 지정 안해주면 시스템 기본으로 읽는다더라..
라는 말에

다음과 같은 소스를 작성해 리눅스와 윈도우에서 돌려보았다
[CODE type="java"]
class test
{
               public static void main(String args[]){
                               System.out.println("file.encoding=" + System.getProperty("file.encoding"));
               }
}
[/HTML][/CODE]


리눅스
$ java test
file.encoding=UTF-8

윈도우
java test
file.encoding=MS949
-_-;;;
다음과같이 고쳐줬다

소켓에서 읽어오는 부분...
[CODE type="java"]
      return new String(inbuf.toByteArray(),"MS949");
[/HTML][/CODE]

소켓으로 보내는 부분...
[CODE type="java"]
  out.write(ws.getBytes("MS949"));
[/HTML][/CODE]
2006/09/10 13:49 2006/09/10 13:49

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다

  1. Tracked from 2010/03/21 19:39 삭제

    Subject: [JAVA] UTF-8 서버에서 올더게이트 전자결제 소켓통신 수정할 부분

    초보라 삽질을 좀 많이 했다. php에도 붙여 봤는데 그 때는 전송 부분에 iconv를 사용해야 했다. 은행은 euc-kr을 사용하고, 우리 홈페이지는 utf-8을 사용했기 때문이다. 만약 홈페이지가 euc-kr로 돼 있는 경우라면 이 글이 필요 없을 것이다. [code php] //은행으로 정보를 전송하기 전에 $String=iconv("utf-8","euckr",$String); //전송하고 나서 응답받은 메시지를 보려면 $String=iconv..