Java到C#-从jar服务器向C#客户端发送/读取字节

Java到C#-从jar服务器向C#客户端发送/读取字节,c#,java,winforms,ascii,extended-ascii,C#,Java,Winforms,Ascii,Extended Ascii,我正在写一个windows应用程序。我在从jar文件发送/接收字节时遇到问题 jar文件向我发送了一个2字节的文件[即…!] 我可以正确读取第一个字节,因为它位于字符代码0-127内。 但对于第二个字节:jar文件中的扩展ASCII代码是“)”,它作为� 类似地,当我将“)”发送到jar文件时,jar将其读取为� 请指导我如何解决这个问题 我使用以下代码从jar读取字节: while (m_socClient.Available > 0) { byte[] buffer = ne

我正在写一个windows应用程序。我在从jar文件发送/接收字节时遇到问题

jar文件向我发送了一个2字节的文件[即…!]

我可以正确读取第一个字节,因为它位于字符代码0-127内。 但对于第二个字节:jar文件中的扩展ASCII代码是“)”,它作为�

类似地,当我将“)”发送到jar文件时,jar将其读取为�

请指导我如何解决这个问题

我使用以下代码从jar读取字节:

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());   
} 
我使用以下代码将字节发送到jar:

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中获得相同的字符代码?

我想您在编码方面遇到了问题。尝试这样做:

var q = new char[] { '!', '\u00a9'}; // u00a9 is copyright symbol in unicode.
byte[] b = System.Text.Encoding.ASCII.GetBytes(q); 
检查字节数组,你会发现它包含两个字节,21(也就是!)和3f,其中第二个不是你想要的。版权标志需要多个字节,但ascii是单字节

使用


为这两个字符提供三个字节。

“jar file sends me”没有意义,我想您通过TCP套接字检索数据,对吗?您收到一些数据并将其解释为UTF-8编码文本。然后用Windows-1252编码对其进行解码。UTF-8中的字符编码与Windows-1252中的不同,这可以解释为什么字节不同。@home:是的,我是通过tcp获取数据的。
byte[] b = System.Text.Encoding.UTF8.GetBytes(q);