我用richtextbox控件接收我发送命令得到的报告(有几万行),其中总是出现一些乱码。导致我提前其中的某些字符老是出错,如何才能避免呢?请高手指教!!!!!

解决方案 »

  1.   

    命令过滤下,强制在一个范围内的ASCII码。
      

  2.   

    我发现将ASCII转变成UNICODE格式就没有了,如何将richtextbox输出的内容全部转换成unicode格式啊???
      

  3.   

    s = strconv(s, vbUnicode)
      

  4.   

    我是用winsock控件发送命令,将得到的结果显示在richtextbox中,然后提取其中的字符,但是出现乱码
      

  5.   

    试试
    Private Sub tcpXXX_DataArrival(ByVal bytesTotal As Long)
    dim b() as byte
    dim s as string
        ReDim b(bytesTotal-1)
        tcpXXX.GetData b
        s = strconv(b, vbUnicode)
    ... ...
      

  6.   


    Dim strXXX As String
    Private Sub Form_Load()
        strXXX=""
    End Sub
    Function CntStrC(str As String, c As String) As Integer
    Dim i As Long
    Dim n As Integer
    On Error Resume Next
        n = 0
        For i = 1 To Len(str)
            If Mid(str, i, 1) = c Then n = n + 1
        Next
        CntStrC = n
    End Function
    Private Sub tcpXXX_DataArrival(ByVal bytesTotal As Long)
    Dim strData As String
    Dim strData1 As String
    Dim ii As Integer
    Dim n As Integer
    Dim L As Long
    On Error Resume Next
        tcpXXX.GetData strData
        strData1 = strXXX + strData
        strXXX = ""
        n = CntStrC(strData1, "}")
        If n >= 1 Then
            For ii = 1 To n
                L = InStr(strData1, "}")
                strData = Left(strData1, L)
                strData1 = Right(strData1, Len(strData1) - L)
                XXXProcess strData
            Next
        End If
        strXXX = strData1
    End Sub
    '发送数据时
    Dim sd as string
    tcpYYY.SendData sd+"}"
      

  7.   

    Dim v() As String  
      Dim i As Long  
      v() = Split(RichTextBox2.Text, vbCrLf)  
      For i = 0 To UBound(v())  If Left(v(i), 3) = "节点号" Then  
    strdian = Replace(v(i), " ", "")  
    strdian = Replace(strdian, "节点号=", "")  
    ElseIf Left(v(i), 7) = "设备IP地址1" Then  
      strIPAddr = Replace(v(i), " ", "")  
      strIPAddr = Replace(strIPAddr, "设备IP地址1=", "")  ElseIf Left(v(i), 4) = "节点名称" Then  
      strNodeName = Replace(v(i), " ", "")  
      strNodeName = Replace(strNodeName, "节点名称=", "")  
      ac_Tmp1.Execute " insert into [设备IP对应表](IP,mingcheng,jiedianhao) values('" & strIPAddr & "', '" & strNodeName & "','" & strdian & "')"  
    End If  Next i  
       
       
      ac_Tmp1.Close  
    这个是我的原代码,怎么引用你的呢???谢谢!!
      

  8.   

    发生问题的根本原因可能是你没有缓冲每次_DataArrival收到的内容,当发现缓冲内容中有一个或若干个完整的发送数据后再将其传给上层。
    举个简单的例子
    你发送三次,第一次aaaa,第二次bbbb,第三次cccc
    可能你_DataArrival两次,第一次aaaabbb,第二次bcccc
    所以你要改成发送三次,第一次aaaa},第二次bbbb},第三次cccc}
    你_DataArrival两次,第一次aaaa}bbb,第二次b}cccc}
    用我上面给的例子,你才能和发送对应
    XXXProcess aaaa
    XXXProcess bbbb
    XXXProcess cccc
      

  9.   

    richtextbox 只能得到rtf格式的word文档文件   
    具体怎么建rtf格式 文档文件  我以前有写过
      

  10.   

    strconv转换Unicode有点问题。