通过TcpClient(byte )发送包含特殊字符的字符串
我正在尝试通过TcpClient(byte [])发送包含特殊字符的字符串。 这是一个例子:
编辑:
我忘了提到结果字符串是“我?”。
编辑-2(根据要求,这里是一些代码):
@DJKRAZE这里有一些代码:
byte[] buffer = Encoding.ASCII.GetBytes("amé"); (TcpClient)server.Client.Send(buffer);
在服务器端:
byte[] buffer = new byte[1024]; Client.Recieve(buffer); string message = Encoding.ASCII.GetString(buffer); ListBox1.Items.Add(message);
列表框中显示的字符串是“am?”
===解决方案===
Encoding encoding = Encoding.GetEncoding("iso-8859-1"); byte[] message = encoding.GetBytes("babé");
更新:
只需使用Encoding.Utf8.GetBytes("ééé");
奇迹般有效。
我想回答一个问题永远不会太晚,希望有人能在这里找到答案。
C#使用16位字符,ASCII将它们截断为8位,以适合一个字节。 经过一番研究,我发现UTF-8是特殊字符的最佳编码。
//data to send via TCP or any stream/file byte[] string_to_send = UTF8Encoding.UTF8.GetBytes("amé"); //when receiving, pass the array in this to get the string back string received_string = UTF8Encoding.UTF8.GetString(message_to_send);
你的问题似乎是Encoding.ASCII.GetBytes("amé");
和Encoding.ASCII.GetString(buffer);
电话,正如他的评论中的’500 – 内部服务器错误’暗示的那样。
é
字符是一个多字节字符,以UTF-8编码,字节序列为C3 A9
。 当您使用Encoding.ASCII
类进行编码和解码时, é
字符将转换为问号,因为它没有直接的ASCII编码。 任何没有ASCII直接编码的字符都是如此。
更改您的代码以使用Encoding.UTF8.GetBytes()
和Encoding.UTF8.GetString()
,它应该适合您。
您的问题和错误对我来说并不清楚,但使用Base64String
可能会解决问题
像这样的东西
上述就是C#学习教程:通过TcpClient(byte )发送包含特殊字符的字符串分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
static public string EncodeTo64(string toEncode) { byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(toEncode); string returnValue = System.Convert.ToBase64String(toEncodeAsBytes); return returnValue; } static public string DecodeFrom64(string encodedData) { byte[] encodedDataAsBytes = System.Convert.FromBase64String(encodedData); string returnValue = System.Text.ASCIIEncoding.ASCII.GetString(encodedDataAsBytes); return returnValue; }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1019591.html