c# - 套接字连接的字符编码问题

标签 c# sockets character-encoding tcpclient

我正在将数据发送到Socket和连接并检索一些数据。我正在检索的数据(这是一个XML文档)包含诸如ä,ü,ö,...的变音符号,但这些符号未正确编码,我只能得到?或)))@符号而不是变音符号。

有什么不正确的方式我如何检索数据?数据以ISO-8859-1编码发送回去。

我的代码:

public bool GetData()
    {
        try
        {
            TcpClient tcpClient = new TcpClient("THEIP", 5004);

            NetworkStream ns = tcpClient.GetStream();

            if (ns.CanWrite)
            {
                string text = this.xmlRequest;
                byte[] sendBytes = Encoding.ASCII.GetBytes(text);

                string sendData = Encoding.ASCII.GetString(sendBytes);

                ns.Write(sendBytes, 0, sendBytes.Length);
            }

            System.Threading.Thread.Sleep(2000);

            int i = 0;

            if (ns.CanRead)
            {
                do
                {

                    byte[] recvBytes = new byte[tcpClient.ReceiveBufferSize];

                    i = i + ns.Read(recvBytes, 0, tcpClient.ReceiveBufferSize);



                    string returnData = Encoding.ASCII.GetString(recvBytes);

                    returnData = returnData.Substring(0, i);

                    this.xmlResponse = returnData;

                } while (ns.DataAvailable);
            }

            // got full data...
            bool status = this.ProcessXMLData();
            ns.Close();

            if (status)
            {
                return true;
            }
            else
            {
                return false;
            }


        }
        catch (SocketException se)
        {
            this.errorFlag = true;
            this.errorMessage = se.Message;
            return false;
        }
    }

最佳答案

如果您确定正在使用的编码是ISO-8859-1,则使用Encoding.ASCII代替Encoding.GetEncoding("ISO-8859-1")

关于c# - 套接字连接的字符编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12912833/

相关文章:

c++ - 关于套接字编程和多线程的面试问题

python - 如何在 Python 2.7 中使用 smtplib 在电子邮件中设置字符集?

c# - LINQ 计算链接表中的行数

c# - 使用 TLS 1.2 从 HttpClient 连接到 Azure FrontDoor 后面的 API

c# - 在 C# 中生成随机值

c - 在 connect 调用后使用 select

c# - 如何使用 SignalR 保证消息传递?

c - Windows C套接字: select() gives WSAENOTSOCK error

java.lang.NoClassDefFoundError : java. nio.charset.StandardCharsets

asp.net - Web请求编码问题