我用 visual sniffer 截取了一段代码,发现里面的汉字全部变成了$u5C0F这样子的也就是小=$u5C0F
有=$u6709请问$u5C0F是什么编码方式,有现成的编码程序吗?

解决方案 »

  1.   


    Private Sub Command1_Click()
        Text1 = Hex(AscW("小"))
    End Sub
      

  2.   

    Private Sub Command1_Click()
        Text1 = ChrW(&H5C0F)
    End Sub
      

  3.   

    Asc 函数
    返回一个 Integer,代表字符串中首字母的字符代码。
    语法
    Asc(string)
    必要的 string 参数可以是任何有效的字符串表达式。如果 string 中没有包含任何字符,则会产生运行时错误。
    说明
    在非 DBCS 系统下,返回值范围为 0 – 255 。在 DBCS 系统下,则为 -32768 – 32767。
    注意    AscB 函数作用于包含在字符串中的字节数据,AscB 返回第一个字节的字符代码,而非字符的字符代码。AscW 函数返回 Unicode 字符代码,若平台不支持 Unicode,则与 Asc 函数功能相同。Chr 函数
    返回 String,其中包含有与指定的字符代码相关的字符 。
    语法
    Chr(charcode)
    必要的 charcode 参数是一个用来识别某字符的 Long。
    说明
    0 到 31 之间的数字与标准的非打印 ASCII 代码相同。例如,Chr(10) 可以返回换行字符。charcode 的正常范围为 0 – 255。然而,在 DBCS 系统,charcode 的实际范围为 -32768 到 65535。
    注意   ChrB 函数作用于包含在 String 中的字节数据。ChrB 总是返回一个单字节,而不是返回一个字符,一个字符可能是一个或两个字节。ChrW 函数返回包含 Unicode 的 String,若在不支持 Unicode 的平台上,则其功能与 Chr 函数相同。
      

  4.   

    我自己也搞出来了.Private Sub Command1_Click()
        s = AscW("小")
        s = hex(s)
       s = "$u"&s
       print s
    End Sub
    不过还是要谢谢大家,每个人都有分.还有,我要转换的字符串里面有汉字,还有数字及英文,而我不要把数字和英文转换了,怎么办.帮忙写个程序.谢谢
      

  5.   

    Private Sub Form_Load()
    s = "我用 visual sniffer 截取了一段代码,发现里面的汉字全部变成了$u5C0F这样子的 "
    For i = 1 To Len(s)
    s1 = Mid(s, i, 1)
    s2 = s2 & Hex(AscW(s1)) & " "
    Next
    Text1.Text = s2
    End Sub
      

  6.   

    用 Asc() 函数对每个字符进行判断:Sub TextExg()    Dim strTemp$, strOut$, sChar$, i&
        strTemp = "字符串里面有汉字,ABC,123456%+-*/&  还有数字及英文Englist ****"
        strOut = ""
        For i = 1 To Len(strTemp)
            sChar = Mid$(strTemp, i, 1)
            If (Asc(sChar) < 0) Then
                strOut = strOut & "$U" & Hex$(AscW(sChar))
            Else
                strOut = strOut & sChar
            End If
        Next
        Debug.Print strOutEnd Sub
      

  7.   

    不考虑数字和字母
    Private Sub Form_Load()
    s = "我用 visual sniffer 截取了一段代码,发现里面的汉字全部变成了$u5C0F这样子的 "
    For i = 1 To Len(s)
    s1 = Mid(s, i, 1)
    Select Case Asc(s1)
    Case 48 To 57, 65 To 90, 97 To 122
    Case Else
    s2 = s2 & Hex(AscW(s1)) & " "
    End Select
    Next
    Text1.Text = s2
    End Sub
      

  8.   

    7楼的Case 48 To 57, 65 To 90, 97 To 122语句注释掉,看来也正确
      

  9.   

    都很不错了,两段代码都很好但是我的"$u"是加在字符串的前面的.比如"小丽"="$u5C0F$u4E3D"你们的"小丽"="5C0F$u4E3D$u"麻烦再小改一下.
    我立刻结贴.谢谢
      

  10.   

    就是 Unicode 编码
    Debug.Print ChrW(&H5C0F)
    Debug.Print ChrW(&H6709)
      

  11.   

    Debug.Print "&u" & Hex(AscW("小"))
      

  12.   

    原来是 $
    Debug.Print "$u" & Hex(AscW("小"))
      

  13.   

    我把大家的方法修改了一下Private Sub Command1_Click()
    s = "小丽2008 "
    For i = 1 To Len(s)
    s1 = Mid(s, i, 1)
    Select Case Asc(s1)
    Case 48 To 57, 65 To 90, 97 To 122
    Case Else
    s2 = s2 & "$u" & Hex(AscW(s1))
    End Select
    Next
    Text1.Text = s2
    End Sub出来的是 "$u5C0F$u4E3D$u20"
    不是我要的"$u5C0F$u4E3D2008"
      

  14.   

    Option ExplicitSub Main()
        Dim s1 As String, s2 As String, ch As String
        Dim i As Long, l As Long
        s1 = "小丽2008 "
        For i = 1 To Len(s1)
            ch = Mid$(s1, i, 1)
            l = AscW(ch)
            If l > 255 Then
                s2 = s2 & "$u" & Hex(l)
            Else
                s2 = s2 & ch
            End If
        Next
        
        Debug.Print s2
    End Sub
      

  15.   

    Option Explicit
        Dim s, s1, s2
        Dim i As Integer
    Private Sub Command1_Click()
        s = "小丽2008 "
        For i = 1 To Len(s)
            s1 = Mid(s, i, 1)
            If AscW(s1) > 128 Then
                s2 = s2 & "$u" & Hex(AscW(s1))
            Else
                s2 = s2 & s1
            End If
        Next
        Text1.Text = s2
    End Sub