BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream(), "UTF-8")); bw.write(str+"\n"); bw.flush();
br = new BufferedReader(new InputStreamReader(s.getInputStream(), "UTF-8")); String str = br.readLine(); //str 처리
위처럼 보내고 아래처럼 받아서 처리하는데
서버소켓은 PC이고, 클라이언트는 안드로이드인 상태입니다.
안드로이드->PC로는 한글 전송이 문제없이 처리되는데 PC->안드로이드로 보내면 한글이 깨지네요.
안드로이드 인코딩도 UTF-8이 맞는것 같은데 안되네요.
아시는 분께 도움 부탁드려봅니다.
PC 측면에서..문제가 있는 듯 합니다.
PC측 프로그렘이 유니코드라면..문제가 없을 듯 한데~~.
어떤 프로그렘(대표적으로,Programmer's Notepad 2)은..유니코드가 지원 되지 않읍니다.
VB6 /한글 버젼중 초기버젼/도 지원 하지 않읍니다.
예네들 읽기는 잘 해요...
그리고..
만약 PC측에서,winSocket수준의 접근을 하는 프로그렘이라면
프로그렘 작성시..한글을 ASCII 바이트로 변환해 주어야 합니다.
Private Sub send2svr(ByVal ins As String)
Dim bb(4096) As Byte
On Error Resume Next
bb = System.Text.Encoding.ASCII.GetBytes(ins)
stream.Write(bb, 0, bb.Length)
End Sub
요게..vs2008 에서는 한글 잘 보네고요.
vb6초기 버젼에서는..깨져요.
PC 프로그램도 자바로 만들었어요.
서버 구동하거나 한게 아니라 그냥 순수 자바 코드에요
테스트 중이라 필요한 것만 넣은 상태이구요..
public class Server { static ServerSocket ss = null; static Socket s = null; public static void main(String[] args) { try { System.out.println(System.getProperty("file.encoding")); ss = new ServerSocket(1111); s = ss.accept(); System.out.println("accept"); new Receiver(s).start(); new Sender(s).start(); } catch (Exception e) { System.out.println("create socket error"); } }}
class Receiver extends Thread{ private BufferedReader br; Socket s = null; public Receiver(Socket s){ this.s = s; } public void run(){ try{ br = new BufferedReader(new InputStreamReader(s.getInputStream(), System.getProperty("file.encoding"))); while(true){ String str = br.readLine(); System.out.println(str); } }catch(Exception e){ System.out.println("receiver error"); } }}
class Sender extends Thread{ Scanner sc = new Scanner(System.in); Socket s = null; public Sender(Socket s){ this.s = s; } public void run(){ while(true){ try{ String str = sc.next(); if(str != null){ ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream()); oos.writeObject(str.getBytes("utf-8")); oos.flush(); } }catch(Exception e){ System.out.println("sender error"); } } }}
안드로이드 수신하는 쪽 코드는 아래와 같고, receive는 TextView에요
BufferedReader도 써보고 PrintWriter도 써보고.. getByte도 써보고
Object 스트림으로 getByte("utf-8")된 Object 자체를 보내서 new String(buf, "utf-8")해도 안되네요....