日期:2014-05-20  浏览次数:20874 次

用SOCKET编程,Unicode转换问题
Dim   Var(1)   As   Byte
                Dim   v()   As   Byte
                Dim   i   As   Integer
                Var(0)   =   238
                Var(1)   =   1
                Te.Text   =   System.Text.Encoding.Default.GetString(Var)
                v   =   System.Text.Encoding.Default.GetBytes(Te.Text)
                Tx.Text   =   " "
                For   i   =   LBound(v)   To   UBound(v)
                        Tx.Text   =   Tx.Text   &   v(i)   &   "   "
                Next
用System.Text.Encoding.UTF8处理数据时只显示小于128的数据
而用上面的转换时超过128转换的数据就错误了,请高手指点
而System.Text.Encoding.Default却得不到要显示的字符并且当数值为128以上时再转换成字节数组时该数据就错了


------解决方案--------------------
up1
------解决方案--------------------
vb ~~~~~~~~~~~~ 0_0

--------------------严重打击


JF
------解决方案--------------------
jf 下班
------解决方案--------------------
怎么弄得这么麻烦
Encoding.Unicode.GetBytes
Encoding.Unicode.GetString
------解决方案--------------------
你是用哪种编码方式得到的Bytes,就用相应的方式再得到String..

for exmaple:
string str = "测试 ";
byte[] array = Encoding.Default.GetBytes(str);
string s = Encoding.Default.GetString(array);
or

string str = "测试 ";
byte[] array = Encoding.Unicode.GetBytes(str);
string s = Encoding.Unicode.GetString(array);

------解决方案--------------------
Encoding.Unicode.GetString
Encoding.Unicode.GetBytes
这两个函数是对应使用的,就像加密和解密函数一样。
所以即使超过128的数据转换出错,也根本不会妨碍你的程序
-------------------------
Socket通讯肯定是一边发送报文,另一边接受,而且两边要达成的共识就是是我发出去的是什么你接受的就是什么
如果你发出去的是字符串,你可以用Encoding.Unicode.GetBytes先转换成字节数组,在接受的时候,用Encoding.Unicode.GetString就绝对可以转换回你发送的字符串。
如果你发送的根本就是自己组织的byte[],那么接受的也是byte[],而不是string

------解决方案--------------------
Encoding.Unicode.GetString
Encoding.Unicode.GetBytes
这两个函数是对应使用的,就像加密和解密函数一样。
所以即使超过128的数据转换出错,也根本不会妨碍你的程序
Socket 是一发包 一接包.. 然后又是一发包 一接报~!。。
如果你发出去的是字符串,你可以用Encoding.Unicode.GetBytes先转换成字节数组,在接受的时候,用Encoding.Unicode.GetString就绝对可以转换回你发送的字符串。
如果你发送的根本就是自己组织的byte[],那么接受的也是byte[],而不是string
------解决方案--------------------
GM001(Sharepoint 2007) ( ) 信誉:100 Blog 2007-01-16 09:11:07 得分: 0


GM001(Sharepoint 2007

Encoding.Unicode.GetString
Encoding.Unicode.GetBytes
这两个函数是对应使用的,就像加密和解密函数一样。
所以即使超过128的数据转换出错,也根本不会妨碍你的程序
Socket 是一发包 一接包.. 然后又是一发包 一接报~!。。
如果你发出去的是字符串,你可以用Encoding.Unicode.GetBytes先转换成字节数组,在接受的时候,用Encoding.Unicode.GetString就绝对可以转换回你发送的字符串。