C#与VB之间的socket通信汉字乱码

bsetsail 2011-08-08 06:25:33
大家说转换成unicode就行,但是还是有问题,VB和C#的unicode感觉不一样

Byte[] send = System.Text.Encoding.Unicode.GetBytes(this.textBox1.Text);
clientsocket.Send(send);


以下是大家常说的方式
Dim bb() As Byte
ReDim bb(1 To bytesTotal)
Dim DD As String
Winsock1.GetData bb()
DD = StrConv(bb(), vbFromUnicode)
Debug.Print DD


解析出来还是?????
...全文
183 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bsetsail 2011-08-10
  • 打赏
  • 举报
回复
Dim bb() As Byte
ReDim bb(1 To bytesTotal)
Dim DD As String
Winsock1.GetData bb()
DD = bb()
这样也行,晕了
倒大霉的上帝 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhao4zhong1 的回复:]
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。
[/Quote]
+1
chinaboyzyq 2011-08-10
  • 打赏
  • 举报
回复
Dim bb() As Byte
ReDim bb(1 To bytesTotal)
Dim DD As String
Winsock1.GetData bb()
DD = StrConv(bb(), vbUnicode)
Debug.Print DD
zzyong00 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bsetsail 的回复:]
引用 2 楼 zzyong00 的回复:
Dim bb() As Byte
ReDim bb(1 To bytesTotal)
Dim DD As String
Winsock1.GetData bb()
DD = bb
Debug.Print DD

是????这样的乱码
[/Quote]
如果传过来的就是unicode码,哪应该没问题
神马都能聊 2011-08-10
  • 打赏
  • 举报
回复
需要转换一下编码

    s = StrConv(s, vbFromUnicode)
c_cyd2008 2011-08-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bsetsail 的回复:]
引用 1 楼 c_cyd2008 的回复:

Unicode也分utf-8,utf-16,utf-32,VB6使用utf-16,不知道C#用什么,你先查明C#用什么编码,然后就好办了

C# 使用System.Text.Encoding.Unicode的时候就是utf-16的
[/Quote]
VB6的winsock在传输字符串会先转为ansi编码,收到后再转为utf-16,你用抓包工具先查明C#是不是也会做这样的事,免得病急乱投医,查明后你只需问XXX编码转XXX编码,一次就搞定
icansaymyabc 2011-08-09
  • 打赏
  • 举报
回复
unicode 通常不是用来在网上传输的,所以才有 utf-8 utf-7 这些东东。

你不如转成 gb2312 编码进行传递
赵4老师 2011-08-09
  • 打赏
  • 举报
回复
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。
赵4老师 2011-08-09
  • 打赏
  • 举报
回复
Dim bb() As Byte
Dim i As Long
ReDim bb(bytesTotal-1)
Winsock1.GetData bb()
for i=0 to bytesTotal-1
Debug.Print right("0"+hex(bb(i)),2);" ";
if i mod 16 = 15 then debug.print
next
debug.print
bsetsail 2011-08-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zzyong00 的回复:]
Dim bb() As Byte
ReDim bb(1 To bytesTotal)
Dim DD As String
Winsock1.GetData bb()
DD = bb
Debug.Print DD
[/Quote]
是????这样的乱码
bsetsail 2011-08-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 c_cyd2008 的回复:]

Unicode也分utf-8,utf-16,utf-32,VB6使用utf-16,不知道C#用什么,你先查明C#用什么编码,然后就好办了
[/Quote]
C# 使用System.Text.Encoding.Unicode的时候就是utf-16的
zzyong00 2011-08-08
  • 打赏
  • 举报
回复
Dim bb() As Byte
ReDim bb(1 To bytesTotal)
Dim DD As String
Winsock1.GetData bb()
DD = bb
Debug.Print DD

c_cyd2008 2011-08-08
  • 打赏
  • 举报
回复
Unicode也分utf-8,utf-16,utf-32,VB6使用utf-16,不知道C#用什么,你先查明C#用什么编码,然后就好办了

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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