如何解决richtextbox中显示乱码的问题
我用richtextbox控件接收我发送命令得到的报告(有几万行),其中总是出现一些乱码。导致我提前其中的某些字符老是出错,如何才能避免呢?请高手指教!!!!! --------------------编程问答-------------------- 命令过滤下,强制在一个范围内的ASCII码。 --------------------编程问答-------------------- 我发现将ASCII转变成UNICODE格式就没有了,如何将richtextbox输出的内容全部转换成unicode格式啊??? --------------------编程问答-------------------- 取rtf格式的可以,比如textRTF --------------------编程问答-------------------- 咋没人呢? --------------------编程问答-------------------- API MultiByteToWideChar --------------------编程问答--------------------s = strconv(s, vbUnicode)--------------------编程问答-------------------- 我是用winsock控件发送命令,将得到的结果显示在richtextbox中,然后提取其中的字符,但是出现乱码 --------------------编程问答--------------------
不行!! --------------------编程问答-------------------- 高手呢???? --------------------编程问答-------------------- 试试
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)
... ...
--------------------编程问答--------------------
--------------------编程问答-------------------- Dim v() As String
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+"}"
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
这个是我的原代码,怎么引用你的呢???谢谢!! --------------------编程问答-------------------- 发生问题的根本原因可能是你没有缓冲每次_DataArrival收到的内容,当发现缓冲内容中有一个或若干个完整的发送数据后再将其传给上层。
举个简单的例子
你发送三次,第一次aaaa,第二次bbbb,第三次cccc
可能你_DataArrival两次,第一次aaaabbb,第二次bcccc
所以你要改成发送三次,第一次aaaa},第二次bbbb},第三次cccc}
你_DataArrival两次,第一次aaaa}bbb,第二次b}cccc}
用我上面给的例子,你才能和发送对应
XXXProcess aaaa
XXXProcess bbbb
XXXProcess cccc --------------------编程问答--------------------
能不能在说的详细点,在我的原代码上写的详细点,不胜感激!!!! --------------------编程问答-------------------- 高手呢??????? --------------------编程问答-------------------- richtextbox 只能得到rtf格式的word文档文件
具体怎么建rtf格式 文档文件 我以前有写过 --------------------编程问答-------------------- 还有txt 格式的也能显示 --------------------编程问答--------------------
可否说的详细一点啊??? --------------------编程问答--------------------
顶 --------------------编程问答-------------------- strconv转换Unicode有点问题。 --------------------编程问答-------------------- 怎么没有高手来指教呢!!!!!!!????????????????? --------------------编程问答-------------------- 如何避免出现乱码,高手们快出现!!!!!!!!!!!!!!!!!! --------------------编程问答-------------------- ?????????????????????????
补充:VB , 基础类