ASCII码值在0x7f-0xff范围被0x3F代替,N多方法解决不了
写了一个服务器端程序C#,客户端是个硬件,通过tcpip连接,现在只要是超过7F,就显示成3F,已经用了N多方法解决不了,请高手帮忙下面的方法收到超过7F的值就变成3F
string tempStr = System.Text.Encoding.ASCII.GetString(readWriteObject.readBytes, 0, count);
------------------------------------------------------------------------------------------
下面的方式数据位数转换后就不对了
方法一:数据位数不对
string tempStr = System.Text.Encoding.Default.GetString(readWriteObject.readBytes, 0, count);
方法二:数据位数不对
Char[] tempChar = Encoding.Default.GetChars(readWriteObject.readBytes, 0, count);
string tempStr = new string(tempChar);
方法三:数据倍数不对
Encoding extendedASCII = Encoding.GetEncoding("gb2312");
Char[] tempChar = extendedASCII.GetChars(readWriteObject.readBytes, 0, count);
string tempStr = new string(tempChar); ascii 0x3f 0x7f --------------------编程问答-------------------- 1、不是所有东西都能当成字符串。有时候就该用二进制,或自定义结构。
2、如果确实是字符串,你可以用latin1编码,它可以兼容0~255。
--------------------编程问答-------------------- --------------------编程问答--------------------
Encoding latin1 = Encoding.GetEncoding("ISO-8859-1");
先谢谢两位的回答
试过"ISO-8859-1",还是数据位数不对。
我现在就是不知道硬件怎么出来的,只知道我要写个服务器端程序接收,痛苦
对了再说明一下,我是读下来后作为日志存储,硬件传过来的内容如下:
max retrans=4,tx integer=15 ,cba=0,re est=0,access class=0
arfcn=26,mcc=460,mnc=0,rssi 36
fn 2241GSMPORT4877,page response
enter traffic mode
"5m-àSdð $ÿ+++++++ "5++++++++++++++++++++ "5³s5'S ôh»F+++++++ "5Ó-àSdð $ÿ+++++++ "5æ MXCl9J
---------------------------------------------------------------------------------
能看的懂的字符收到全对,就是在用Beyond Compare进行16进制查看时
如果是ascii编码过来的就是3F问题,数据位数都能对上
如果用其他编码,数据位数就超出了 --------------------编程问答-------------------- 通讯的两端要是互相都不知道使用什么编码,那还玩什么啊。
就好像咱俩说话你连我说的是什么语言都不知道,还谈什么沟通啊
补充:.NET技术 , C#