1

ソケットと接続にデータを送信し、データを取得しています。取得しているデータ (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;
        }
    }
4

1 に答える 1

3

エンコードが使用されていることが確実な場合は、ISO-8859-1 をEncoding.ASCII使用する代わりにEncoding.GetEncoding("ISO-8859-1")

于 2012-10-16T10:47:17.330 に答える