我一个字符串里面有汉字和字符。string m_strLine="";
for ( int i=0; i < count;i++)
{
Char ch = Convert.ToChar(buf[i]);
switch( ch )
{
case '\r':
m_strLine += Convert.ToString("\r\n");
break;
case '\n':
break;
default:
m_strLine += Convert.ToString(ch);
break;
}
}我像这样转化过去,但是转化过来,就不对了,转成char的时候也发现不对。里面还有乱码??
谢谢回复!!
for ( int i=0; i < count;i++)
{
Char ch = Convert.ToChar(buf[i]);
switch( ch )
{
case '\r':
m_strLine += Convert.ToString("\r\n");
break;
case '\n':
break;
default:
m_strLine += Convert.ToString(ch);
break;
}
}我像这样转化过去,但是转化过来,就不对了,转成char的时候也发现不对。里面还有乱码??
谢谢回复!!
解决方案 »
- 怎样实现窗体透明度和图片的透明度一致
- datalist模板内绑定datalist
- Asp.net有主函数main么,怎么设置首页?
- 请教打印的问题
- 急阿!!!!为什么我的服务器装了Crystle Reports 9.2之后不会有Managed目录?
- 请高手帮个忙--DataGrid中修改(已研究两天了)
- ***请各位高手帮忙,关于datagridview里面的combox列的问题*****
- 高分请教:怎样在.NET中实现类似于OLE的技术?
- 【急】如何通过InvokeMember取到成员函数返回的COM对象???
- 安装vs.net出现的问题
- c#.net关机程序
- 方法中的数组参数string[][]能用吗?
byte[] bytesTemp = System.Text.Encoding.Default.GetBytes(某变量或"字符串");
Encoding类中有很多中编码方式,比如UTF8,Gb2312等等,推荐你是用UTF8的,
如果要转换回来就是用,
string getstr = Encoding.UTF32.GetString( 字节型变量比如上面的 bytesTemp )函数返回string
byte[] bytesTemp = System.Text.Encoding.GetEncoding("gb2312").GetBytes("字符串");
如果要转换回来就是用
string getstr = Encoding.GetEncoding("gb2312").GetString(bytesTemp)
首先,在我们的计算机里的字符默认编码是ASCII吗,所以如果用System.Text.Encoding.Default.GetBytes(变量值),你得到的是ASCII值,得到字符的ASCII值是你问题中要解决的第一步。
第二,我们要对得到的ASCII值要有一个判断,汉字在ASCII里有一个编码范围,如果在这个编码范围内,你需要给他设一个输出,如果不是直接输出好了,这样就能解决遇到汉字的一部分问题。如果真要将汉字输出可能还需要加判断。
C# codeEncoding.Default.GetString(buffer);
[/Quote]
{
//用于接收数据的缓冲
byte[] buf;
buf = new byte[max_char];
int count=socket.Receive(buf);
if (count>0)
{
string sRecieved = Encoding.GetEncoding("gb2312").GetString(buf, 0, count );
string m_strLine="";
for ( int i=0; i < count;i++)
{
Char ch = Convert.ToChar(buf[i]);
switch( ch )
{
case '\r':
m_strLine += Convert.ToString("\r\n");
break;
case '\n':
break;
default:
m_strLine += Convert.ToString(ch);
break;
}
}
try
{
int strLinelen = m_strLine.Length ;
if ( strLinelen == 0 )
{
m_strLine = Convert.ToString("\r\n");
} Byte[] mToProcess = new Byte[strLinelen];
for ( int i=0; i < strLinelen ; i++)
mToProcess[i] = Convert.ToByte(m_strLine[i]);
// Process the incoming data
string mOutText = ProcessOptions(mToProcess);
if ( mOutText != "" )
SetReMsg(mOutText,_sendStatus);
RespondToOptions();
}
catch( Exception ex )
{
Object x = this ;
MessageBox.Show(ex.Message , "Information!" );
}
}
else
{
socket.Shutdown( SocketShutdown.Both );
socket.Close();
}
}
#endregion #region ProcessOptions
private string ProcessOptions(byte[] m_strLineToProcess)
{
string m_DISPLAYTEXT ="";
string m_strTemp ="" ;
string m_strOption ="";
string m_strNormalText ="";
bool bScanDone =false;
int ndx =0;
int ldx =0;
char ch ;
try
{
for ( int i=0; i < m_strLineToProcess.Length ; i++)
{
Char ss = Convert.ToChar(m_strLineToProcess[i]);
m_strTemp = m_strTemp + Convert.ToString(ss);
}
while(bScanDone != true )
{
int lensmk = m_strTemp.Length;
ndx = m_strTemp.IndexOf(Convert.ToString(IAC));
if ( ndx > lensmk )
ndx = m_strTemp.Length; if(ndx != -1)
{
m_DISPLAYTEXT+= m_strTemp.Substring(0,ndx);
ch = m_strTemp[ndx + 1];
if ( ch == DO || ch == DONT || ch == WILL || ch == WONT )
{
m_strOption = m_strTemp.Substring(ndx, 3);
string txt = m_strTemp.Substring(ndx + 3);
m_DISPLAYTEXT+= m_strTemp.Substring(0,ndx);
m_ListOptions.Add(m_strOption);
m_strTemp = txt ;
}
else
if ( ch == IAC)
{
m_DISPLAYTEXT= m_strTemp.Substring(0,ndx);
m_strTemp = m_strTemp.Substring(ndx + 1);
}
else
if ( ch == SB )
{
m_DISPLAYTEXT= m_strTemp.Substring(0,ndx);
ldx = m_strTemp.IndexOf(Convert.ToString(SE));
m_strOption = m_strTemp.Substring(ndx, ldx);
m_ListOptions.Add(m_strOption);
m_strTemp = m_strTemp.Substring(ldx);
}
}
else
{
m_DISPLAYTEXT = m_DISPLAYTEXT + m_strTemp;
bScanDone = true ;
}
}
m_strNormalText = m_DISPLAYTEXT;
}
catch(Exception eP)
{
MessageBox.Show(eP.Message , "Application Error!!!" , MessageBoxButtons.OK , MessageBoxIcon.Stop );
Application.Exit();
}
return m_strNormalText ;
}大家帮个忙看有什么好的方法不,让起可以显示汉字.我对telnet不是怎么了解!谢谢大家!!