ASCII码值在0x7f-0xff范围被0x3F代替,N多方法解决不了

guodong2011 2013-05-08 12:04:43
写了一个服务器端程序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);
...全文
524 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cheng2005 2013-05-08
  • 打赏
  • 举报
回复
通讯的两端要是互相都不知道使用什么编码,那还玩什么啊。 就好像咱俩说话你连我说的是什么语言都不知道,还谈什么沟通啊
guodong2011 2013-05-08
  • 打赏
  • 举报
回复
引用 2 楼 bdmh 的回复:
asic吗值是有范围,正数到127(7F),你超了,当然不能正确显示了 你们两段要编码一致,人家用unicode,你也用unicode
先谢谢两位的回答 试过"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问题,数据位数都能对上 如果用其他编码,数据位数就超出了
bdmh 2013-05-08
  • 打赏
  • 举报
回复
asic吗值是有范围,正数到127(7F),你超了,当然不能正确显示了
你们两段要编码一致,人家用unicode,你也用unicode
gomoku 2013-05-08
  • 打赏
  • 举报
回复
1、不是所有东西都能当成字符串。有时候就该用二进制,或自定义结构。 2、如果确实是字符串,你可以用latin1编码,它可以兼容0~255。

Encoding latin1 = Encoding.GetEncoding("ISO-8859-1");

111,113

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧