string message =tokens[1].Trim().ToString()+"您已经成功连接。\n";大概是这样...
解决方案 »
- 向[wuyq11]提问:为什么发送自定义消息到窗体上就出现“外部组件发生异常”的异常信息。
- 很简单的SQL语句,数据库运行成功,程序得不到
- 如何实现消息堵塞,我读取一个文件,直到有内容我才继续后续工作,写个方法??谢谢
- 有没有办法用propertyGrid1控件动态显示XML文档某个结点中的属性?
- 有关一个项目的讨论,做过同一城市连锁店的会员管理系统的请进!!!急切中,
- VS .NET 2003 中最有意思的 BUG!!!!!!!!
- 自動關機,進者給分,急用,在線等
- 定制控件问题,难啊!
- 求c#读取xml属性值
- 禁止多次点击
- C# 安全期计算器,需要的朋友可下载。有效至8月12日
- 在C#.net下做ASP.NET Web Application进行SQL Server 数据库连接失败???
用replace怎么用?
同时也谢谢大家的帮助!!
Byte[] buffer = new Byte[2048];
定义了一个2048字节的数组,数组初始化每个元素为0,而你接收的数据总长度不到2048,所以,剩余的字节元素的值就是0了。当调用GetString的时候,系统把每个Byte数据转换为对应的asc的字符,ASC为0对应的字符是空字符('\0'),所以就有了你说的问题了。测试代码:
byte[] bb=new byte[100];
byte[] aa=System.Text.Encoding.Default.GetBytes("中国");
for(int i=0;i<aa.Length;i++)
{
bb[i]=aa[i];
}
string strTmp=System.Text.Encoding.Default.GetString(bb).Trim();
MessageBox.Show(strTmp.Length.ToString());
MessageBox.Show(strTmp);
MessageBox.Show(strTmp+"abc");
在弹出消息中,第一个是98,这个我们好理解,因为汉字占两个字节,但在字符串算一个字符,但第二个弹出的内容只有两个汉字,其余的到哪里去了呢?特别第三个弹出信息同第二个完全一样,abc又到哪里了呢?这是因为:
MessageBox.Show调用了系统的MessageBox的API函数,而系统API是用C++写的,字符串以zero结尾即以'\0'表示结尾,因此把第一个'\0'字符后面的内容全部忽略了。而在C#中,类似VB,字符串不再是使用'\0'来表示结尾了,而是使用了一个复杂的类来实现的,所以出现了你这样的问题。解决:我现在还没有找到很好的解决办法,你可以先用下面的代码:strTmp.Substring(0,strTmp.IndexOf('\0'))来删除其中多余的字符,这样可以保证与C/C++兼容。