用WINSOCK传输文件中的乱码有关问题
用WINSOCK传输文件中的乱码问题
用WINSOCK做了传输文件的程序,在接受文件时,出现了乱码(部分汉字乱码),
例如我要传输的内容,传输出去后,接收到是这样的:Dim Gvstr As String = "" '全局变量 历史遗留数砭莅?
请各位大侠告诉我该如何接收才能保证不乱码呢?
------解决方案--------------------
你可否列出一个收到的字节数组的内容,和其对应的正确的字符?这样好判断些。
------解决方案--------------------
将任何要传输的内容都转为Byte数组,发送,接收Byte数组,反转为所需内容。
------解决方案--------------------
用WINSOCK做了传输文件的程序,在接受文件时,出现了乱码(部分汉字乱码),
例如我要传输的内容,传输出去后,接收到是这样的:Dim Gvstr As String = "" '全局变量 历史遗留数砭莅?
请各位大侠告诉我该如何接收才能保证不乱码呢?
------解决方案--------------------
你可否列出一个收到的字节数组的内容,和其对应的正确的字符?这样好判断些。
------解决方案--------------------
将任何要传输的内容都转为Byte数组,发送,接收Byte数组,反转为所需内容。
------解决方案--------------------
- VB code
Dim lngFileSize As Long Dim lngReadSize As Long Dim strFileName As String Dim lngState As Long Dim fs As Integer Private Sub Command1_Click() strFileName = "C:\test.rar" lngFileSize = 0 lngReadSize = 0 lngState = 0 Winsock1.Connect "127.0.0.1", 999 End Sub Private Sub Winsock1_Connect() Winsock1.SendData "GET " & strFileName End Sub Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim byBuff() As Byte Dim strBuff As String Select Case lngState Case 0: ' 取得服务器发回来的文件数据大小 Winsock1.GetData strBuff, vbString, bytesTotal If Len(strBuff) < 5 Then Winsock1.Close Exit Sub End If If UCase(Left(strBuff, 3)) <> "+OK" Then Winsock1.Close Exit Sub End If strBuff = Right(strBuff, Len(strBuff) - 4) If IsNumeric(strBuff) = False Then Winsock1.Close Exit Sub End If lngFileSize = CLng(strBuff) lngState = 1 Winsock1.SendData "+OK Send Data" Exit Sub Case 1: '开始读取文件数据 Winsock1.GetData byBuff, vbArray + vbByte, bytesTotal If lngReadSize = 0 Then fs = FreeFile Open strFileName For Binary As #fs End If Put #fs, , byBuff lngReadSize = lngReadSize + bytesTotal If lngReadSize >= lngFileSize Then Close #fs Winsock1.Close End If Exit Sub End Select End Sub