2012-08-24 3 views
1

Windows 애플리케이션을 작성 중입니다. jar 파일에서 바이트를 보내거나받는 데 문제가 있습니다.Java to C# - jar 서버에서 C# 클라이언트로 바이트 보내기/읽기

jar 파일은 나에게 2 바이트를 보낸다 즉 ..! ©]

는 문자 코드 0 ~ 127 내에서 제공하기 때문에 내가 올바르게 1 바이트를 읽을 수 있습니다. 하지만 2 바이트를 위해 : 내가 jar 파일에 "©"를 보낼 때 확장 된 ASCII는 jar 파일에서 "©"를 말하는, 그것은 유사

같은 C# 응용 프로그램에 제공, 항아리

친절

로 읽는다 이 문제를 해결하는 방법을 알려주십시오.

는 항아리에서 바이트를 읽기 위해이 코드를 사용하고 있습니다 :

while (m_socClient.Available > 0) 
{ 
    byte[] buffer = new byte[2048]; 
    int iRx = m_socClient.Receive(buffer); 
    char[] chars = new char[iRx]; 
    System.Text.Decoder d = System.Text.Encoding.UTF8.GetDecoder(); 
    int charLen = d.GetChars(buffer, 0, iRx, chars, 0); 
    System.String szData = new System.String(chars); 
    byte[] q1 = Encoding.GetEncoding("Windows-1252").GetBytes(szData.Substring(0, 1)); 
    byte[] r1 = Encoding.GetEncoding("Windows-1252").GetBytes(szData.Substring(1, 1)); 
    int qu = Convert.ToInt32(q1[0].ToString()); 
    int re = Convert.ToInt32(r1[0].ToString()); 
} 

항아리에 바이트를 전송하기 위해이 코드를 사용하고 있습니다 :

var q = Encoding.GetEncoding("Windows-1252").GetString(new byte[] { quotient }); 
var r = Encoding.GetEncoding("Windows-1252").GetString(new byte[] { remainder }); 
Object objData_h = q.ToString() + r.ToString(); 
byte[] byData_h = System.Text.Encoding.ASCII.GetBytes(objData_h.ToString()); 
m_socClient.Send(byData_h); // send the data to jar file. 

친절 제발 도와 드릴까요? C#과 java에서 동일한 문자 코드를 어떻게 얻을 수 있습니까 ??

+0

'jar file sends me'는 의미가 없습니다. TCP 소켓을 통해 데이터를 검색한다고 가정합니다. – home

+2

일부 데이터가 수신되어 UTF-8로 인코딩 된 텍스트로 해석됩니다. 그런 다음 Windows-1252 인코딩으로 디코딩합니다. 문자는 UTF-8에서 Windows-1252와 다르게 인코딩되므로 바이트가 다른 이유를 설명 할 수 있습니다. – Jesper

+0

@home : 예, TCP를 통해 데이터를 가져 오는 중입니다. – Devil023

답변

0

인코딩 문제가 있다고 생각합니다. 이 일을보십시오 :

var q = new char[] { '!', '\u00a9'}; // u00a9 is copyright symbol in unicode. 
byte[] b = System.Text.Encoding.ASCII.GetBytes(q); 

확인 바이트 배열을하고 당신이 2 바이트를 보유하고 볼 수 있습니다 (21) (이는!)과 3 층 여기서 두 번째는 당신이 원하는 없습니다. 저작권 기호는 1 바이트 이상 필요하지만 ascii는 1 바이트입니다.

byte[] b = System.Text.Encoding.UTF8.GetBytes(q); 

사용

당신에게 두 개의 문자를 3 바이트를 제공합니다.

관련 문제