=================================
=================================
=================================
Stream을 생성할 때, charset을 같이 설정 해 주면 된다.
완전 간단하면서 깔끔하다.
ex) reader, writer stream 예. 채팅 앱 만들때 썼던코드 그대로 올려본다...
...bReader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "euc-kr"));
bWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "euc-kr"));[출처] android socket통신 한글 깨짐 현상 처리|작성자 하동하동
=================================
=================================
=================================
본인이 서버와의 소켓통신프로그램을짜던도중 한블록이 20바이트짜리를 10개를 전송받아 20바이트씩 짜르는데 문제가 발생햇다 .
그건바로 한글이 들어있는 바이트를 제대로 자르지 못하는 문제가 발생했던것 .
그래서 안펍을 뒤져보니 이런 글이 ..
링크 : http://www.androidpub.com/70338
결론은 안드로이드는 인코딩 형식을 안정해주면 기본으로 UTF-8 로인코딩하는데 한글은 무려 3Byte 라는 문제가 ~!
해결은 서버와 클라이언트간의 인코딩 형식을 통일시켜주면 된다지만 서버인코딩을 바꾸면 치명적인 문제가 ㄷㄷ
(기본에 나가있는 프로그램은 다른 형식이라 ㄷㄷ)
그래서 클라이언트에서 알아서 해야되는 문제가 생기는데 ...
인코딩 형식을 정해주지 않을때에는 어떤 인코딩옵션인지 몰라 버벅대다가 .
겨우 찾았다 .
윈도우즈 이클립스에서 작성되는 자바 프로그램은 기본으로 "MS949" 를 쓴다고 한다 .
그러니 클라이언드에서 소켓통신으로 받은 바이트를 전환할때는 "MS949" 를 사용한다 .
temp = new String(a, i*28, 28,"MS949"); |
=================================
=================================
=================================
출처: http://godofcode.tistory.com/312
자바 안드로이드 네트워크 통신 소켓 한글 깨짐현상 해결 방법
byte[] write_buf = new byte[SENDSIZE];
DatagramPacket write = new DatagramPacket
(write_buf,write_buf.length,read.getAddress(), read.getPort());
write_buf = temp.getBytes(); < - 문제점은 바로 요녀석이다.
이렇게 바꿔주면 깨긋이 해결
write_buf = temp.getBytes("UTF-8");
서버와 모바일은 서로 케릭터 타입이 다르기때문에 형변환을 해줘야한다.
=================================
=================================
=================================
'스마트기기개발관련 > 안드로이드 개발' 카테고리의 다른 글
안드로이드 WebView, EditText 이용한 그나마 매끄로운 채팅창 구현 (0) | 2011.07.21 |
---|---|
안드로이드 시간차 핸들로 이벤트, 지정 시간후 동작하게 하기 (0) | 2011.07.21 |
안드로이드 [ Android ] Dialog 위치 이동 (0) | 2011.07.19 |
안드로이드 로우레벨 터치 이벤트로 큰 이미지 스크롤 (0) | 2011.07.18 |
안드로이드 Making Sense of Multitouch (0) | 2011.07.18 |