2011-10-25 2 views
1

에 C#을에서 유니 코드 문자열을 보내, 나는 유니 코드 문자열을C#을 측면에서 자바

byte[] b = System.Text.Encoding.UTF8.GetBytes(str); 
    string unicode = System.Text.Encoding.UTF8.GetString(b); 
    //Plus \r\n for end of send string 
    SendString(unicode + "\r\n"); 


    void SendString(String message) 
    { 
     byte[] buffer = Encoding.ASCII.GetBytes(message); 
     AsyncCallback ac = new AsyncCallback(SendStreamMsg); 
     tcpClient.GetStream().BeginWrite(buffer, 0, buffer.Length, ac, null); 
    } 

    private void SendStreamMsg(IAsyncResult ar) 
    { 
     tcpClient.GetStream().EndWrite(ar); 
     tcpClient.GetStream().Flush(); //data send back to java 
    } 

를 보내려면이 코드를 가지고이 문제는 I가 유니 코드 문자열을 수신 할 수있다

 Charset utf8 = Charset.forName("UTF-8"); 
     bufferReader = new BufferedReader(new InputStreamReader(
       sockServer.getInputStream(),utf8)); 
    String message = br.readLine(); 

자바 쪽 자바 측. 어떻게 해결할 수 있습니까?

+3

"받을 수 없다"는 것이 무엇입니까? 정확히 어떻게됩니까? – svick

+4

왜 utf-16 문자열을 utf-8 바이트 배열로 변환 한 다음 utf-16 문자열로 다시 변환 하시겠습니까? – ChaosPandion

답변

3

귀하의 질문은 약간 모호합니다. 당신은 자바 측에서 유니 코드 문자열을받을 수 없다고 말합니다 - 오류가 발생 했습니까? 아니면 ASCII 문자열을 얻고 있습니까? 귀하의 SendString() 메서드가 전송하는 것이기 때문에 ASCII 문자열이 있다고 가정하고 있지만 추가 문제가있을 수 있습니다.

SendString() 메서드는 전달 된 문자열을 ASCII 인코딩의 바이트 배열로 변환하여 시작합니다. UTF8에 ASCII를 변경하고 당신은 UTF8 전송해야합니다,하지만 더 배경없이 당신은이 방법을 정의 위의 불필요한 인코딩 작업을 많이 갖고있는 것 같다

void SendString(String message) 
{ 
    byte[] buffer = Encoding.UTF8.GetBytes(message); 
    AsyncCallback ac = new AsyncCallback(SendStreamMsg); 
    tcpClient.GetStream().BeginWrite(buffer, 0, buffer.Length, ac, null); 
} 

을 내가 보장 할 수 없습니다 위의 인코딩 작업 그것은 불필요합니다 ...

+0

아, 미안하지만,이 줄은 잊어 버렸어. 나는 그것을 고쳤다. 감사합니다 – R4j

+0

@ R4j 작동하는 경우 대답을 수락하십시오! –

+0

Sr, stackoverflow 사용하는 방법을 몰랐다. 나는 다만 도움을 본다. 감사! – R4j

관련 문제