具体的说
就是如何区分一个字符是中文字符还是英文我在MSDN里查过了,没有介绍
可能是MSDN的版本不够新,里面对DBCS的内容没说多少我也用ASCB函数试过了,看不出有什么用。VB 用的是UNICODE 
UNICODE 的0x3000 到0x9fff是分配给中文的吧
但知道这个又怎么做呢?烦请赐教
或请提供一下UNICODE 相关的资料,谢谢

解决方案 »

  1.   

    Debug.Print Asc("我")用Asc()测的话中文好像都是负数.
      

  2.   

    AscW 函数返回 Unicode 字符代码,若平台不支持 Unicode,则与 Asc 函数功能相同。
      

  3.   

    to cdknet(cdksoft) :
    上面一句 在MSDN 里有 但是怎么应用呢?
      

  4.   

    如果只有英文和中文,那么完全可以判断ASCII码排除英文,剩下的就是中文了。如果什么都有的话,好像ASCII码在0到255之间的没有中文,也可以从这个范围判断。
      

  5.   

    Private Function StrToUnicode(strIn As String) As String
    Dim buf() As Byte
    Dim i As Long
    Dim tempa As String
    buf = strIn
    For i = 0 To UBound(buf())
       tempa = Hex(buf(i))
       If Len(tempa) = 1 Then tempa = "0" + tempa
       StrToUnicode = tempa & StrToUnicode
    Next i
    End Function
    调用:
    Private Sub Command1_Click()Dim a As String
    a = StrToUnicode("啊")
    MsgBox aEnd Sub
      

  6.   

    VB 用的是UNICODE 
    UNICODE 的0x3000 到0x9fff是分配给中文的吧
    但知道这个又怎么做呢?用ascw呀
    AscW 传回字符串第一个字Unicode码
    取回之后进行判定
      

  7.   

    dim Buf() as byte
    dim offset as long
    if Asc(Chr(Buf(offset))) =0 then 是中文 else 英文
      

  8.   

    现在Unicode中的跟中日韩表意字符(CJK Ideograph)有关的编码范围是:
    0x4e00 至 0x9fa5 共20902个字
    0xf900 至 0xfa2d 共302个字 (扩展区)
      

  9.   

    len("接")为1
    lenb("分")为2接分,谢谢
      

  10.   

    If LenB(StrConv("接", vbFromUnicode)) <> Len("接") Then MsgBox "是汉字"
      

  11.   

    楼上的代码要改一下:
    If LenB(StrConv("接", vbFromUnicode)) <> Len("接") Then MsgBox "是双字节字符,但未必是汉字"
      

  12.   

    不用管太多
    直接asc()你要判断的字符
    不在0-255就是双字节字符
      

  13.   

    由于"," 和"汉" 都属于lenb()得到2的,不好区分,还是试试可以在你规定的3000-9FFF里来判断的(下面","是FF0C ,"汉"是6C49,其它的你可以自己再测):Private Function StrToUnicode(strIn As String) As String
    Dim buf() As Byte
    Dim i As Long
    Dim tempa As String
    buf = strIn
    For i = 0 To UBound(buf())
       tempa = Hex(buf(i))
       If Len(tempa) = 1 Then tempa = "0" + tempa
       StrToUnicode = tempa & StrToUnicode
    Next i
    End Function
    调用:
    Private Sub Command1_Click()Dim a As String
    a = StrToUnicode("汉")
    if a>="3000" and a<="9FFF" then
      msgbox "这个就是汉字了"
    endifEnd Sub
      

  14.   

    Up 都是聪明人VB代码计算器 3.7.4 欢迎下载试用下载地址:
    华军软件 http://www.onlinedown.net/soft/7545.htm
      

  15.   

    哪位能提供一下
    UNICODE 相关的信息我不知道 标点与一些符号UNICODE 值的范围
      

  16.   

    我再给你一个 解码的过程, 比如将'6C49' 解码后得到 ‘汉’,你把全部字符(不就几十万个嘛!)用循环把0000-FFFF枚举一下,看看汉字都压在哪一块区段里吧,然后发贴告诉一下我们,我没空去弄:Public Function Covert(strIn As String) As String
    'Unicode 转换为 中文函数
        Dim i As Long
        Dim bt(1) As Byte
        Dim hr As String
        
        For i = 1 To Len(strIn) Step 4
            bt(1) = Val("&H" & Mid(strIn, i, 2))
            bt(0) = Val("&H" & Mid(strIn, i + 2, 2))
            hr = bt
            Covert = Covert & hr
        NextEnd Function
      

  17.   

    if asc(mychr)<0 then 
      msgbox "chinese character!"
    end if
      

  18.   

    汉字的码是两个字节,且前面一个字节必须大于0x80H 
            If (zz > &H80) Then                         '大于0x80H表示是汉字 
                Temp_count = zz 
                Temp_count = Temp_count * 256 
                Get #1, , zz      '读低位 
                Biao_count = Biao_count + 1 
                Temp_count = Temp_count + zz 
                If (Temp_count <> 0) Then 
                    Rec_data = Rec_data & Chr(Temp_count) 
                End If 
            Else                                    '未大于0x80H表示是ASCII码 
                If (zz <> 0) Then 
                    kk = Chr(zz) 
                    Rec_data = Rec_data & kk 
                End If 
            End If 
    只好先转化成字符串 
    dim l as long 
    dim s as string 
    s = "2C6E" 
    l = val( "&h" & mid( s, 1, 2 ) ) 
    l = l * 256 + val( "&h" & mid( s, 3 ) ) 
    s = chr( l ) 
    得到繁体的“测”.
      

  19.   

    比较简单的方法就是判断它的asc码是不是小于0(负数),是的话就是属于双字节字符。