各位大侠:
    小弟现在用VB+My SQL开发了一个程序,要在简体和繁体系统的情况下共同使用,现在碰到的难题是在简体系统环境下输入进My SQL中的数据,如有中文字的话,全部显示为乱码.请问各位有没有好的办法解决这个问题.不胜感激!

解决方案 »

  1.   

    ;转换Gb码简体到Gb码繁体
    LCMapString,0804H,04000000H,lpText, -1, addr pszGbs,sizeof pszGbs
    ;转换Gb码到Unicode码
    MultiByteToWideChar,936, 0, addr pszGbs, -1, addr pszGbt,sizeof pszGbt
    ;转换Unicode码到**码
    .....
      

  2.   

    我曾經有問過這樣的問題並且有得到高手們的指點
    Option ExplicitPrivate Declare Function LCMapString Lib "kernel32.dll" Alias "LCMapStringA" (ByVal Locale As Long, ByVal dwMapFlags As Long, ByVal lpSrcStr As String, ByVal cchSrc As Long, ByVal lpDestStr As String, ByVal cchDest As Long) As Long
    Private Declare Function LCMapStringA Lib "kernel32.dll" (ByVal Locale As Long, ByVal dwMapFlags As Long, ByRef lpSrcStr As Any, ByVal cchSrc As Long, ByRef lpDestStr As Any, ByVal cchDest As Long) As Long
    Private Declare Function LCMapStringW Lib "kernel32.dll" (ByVal Locale As Long, ByVal dwMapFlags As Long, ByVal lpSrcStr As Long, ByVal cchSrc As Long, ByVal lpDestStr As Long, ByVal cchDest As Long) As LongPrivate Const LCMAP_BYTEREV As Long = &H800
    Private Const LCMAP_FULLWIDTH As Long = &H800000
    Private Const LCMAP_HALFWIDTH As Long = &H400000
    Private Const LCMAP_HIRAGANA As Long = &H100000
    Private Const LCMAP_KATAKANA As Long = &H200000
    Private Const LCMAP_LINGUISTIC_CASING As Long = &H1000000
    Private Const LCMAP_LOWERCASE As Long = &H100
    Private Const LCMAP_SIMPLIFIED_CHINESE As Long = &H2000000
    Private Const LCMAP_SORTKEY As Long = &H400
    Private Const LCMAP_TRADITIONAL_CHINESE As Long = &H4000000
    Private Const LCMAP_UPPERCASE As Long = &H200'主語言ID
    Private Const LANG_CHINESE As Long = &H4'次語言ID
    Private Const SUBLANG_CHINESE_TRADITIONAL As Long = &H1
    Private Const SUBLANG_CHINESE_SIMPLIFIED As Long = &H2
    Private Const SUBLANG_CHINESE_HONGKONG As Long = &H3
    Private Const SUBLANG_CHINESE_SINGAPORE As Long = &H4
    Private Const SUBLANG_CHINESE_MACAU As Long = &H5'排序方式
    Private Const SORT_CHINESE_PRCP As Long = &H0
    Private Const SORT_CHINESE_BIG5 As Long = &H0
    Private Const SORT_CHINESE_UNICODE As Long = &H1
    Private Const SORT_CHINESE_PRC As Long = &H2
    Private Const SORT_CHINESE_BOPOMOFO As Long = &H3'生成LCID
    Private Const LCID_CHINESE_SIMPLIFIED As Long = (LANG_CHINESE Or SUBLANG_CHINESE_SIMPLIFIED * &H400) And &HFFFF& Or SORT_CHINESE_PRCP * &H10000
    Private Const LCID_CHINESE_TRADITIONAL As Long = (LANG_CHINESE Or SUBLANG_CHINESE_TRADITIONAL * &H400) And &HFFFF& Or SORT_CHINESE_BIG5 * &H10000Dim Cn As New ADODB.ConnectionPrivate Function BIG5ToGB(Str As String) As String '繁體轉簡體
        Dim szSrc As String
        Dim szDest As String
        
        szSrc = Str
        szDest = String$(Len(szSrc), 0) '僅僅簡繁轉換長度不會變化
        Call LCMapStringW(LCID_CHINESE_SIMPLIFIED, LCMAP_SIMPLIFIED_CHINESE, ByVal StrPtr(szSrc), Len(szSrc), ByVal StrPtr(szDest), Len(szDest))
        
        BIG5ToGB = szDest
    End FunctionPrivate Function GBToBIG5(Str As String) As String  '簡體轉繁體
        Dim szSrc As String
        Dim szDest As String
        
        szSrc = Str
        szDest = String$(Len(szSrc), 0) '僅僅簡繁轉換長度不會變化
        Call LCMapStringW(LCID_CHINESE_TRADITIONAL, LCMAP_TRADITIONAL_CHINESE, ByVal StrPtr(szSrc), Len(szSrc), ByVal StrPtr(szDest), Len(szDest))
        
        GBToBIG5 = szDest
        
    End FunctionPrivate Sub btnBIG5ToGB_Click()
        txtGB.Text = BIG5ToGB(txtBIG5.Text)
    End SubPrivate Sub btnGBToBIG5_Click()
       txtBIG5.Text = GBToBIG5(txtGB.Text)
    End Sub
    以上就是整理過後的資料不過要提醒的是:字體雖然有轉換過來,但由於VB支持有限,大部分文字顯示的時候仍是亂碼
      

  3.   

    我也做过多语言,简体中文/繁体中文/英文/日文.....
    不过好象不是你所说的那种,我直接做成.dll文件,不同语言把它翻译后写进去的,根据程序的语言开关进行自由转换.
      

  4.   

    如果是想實現這種功能那更好實現,並且還要來得簡單
    把我以前提供的資料化簡一下,放在一Bas模塊中:
    Option ExplicitPublic Declare Function LCMapString Lib "kernel32.dll" Alias "LCMapStringA" (ByVal Locale As Long, ByVal dwMapFlags As Long, ByVal lpSrcStr As String, ByVal cchSrc As Long, ByVal lpDestStr As String, ByVal cchDest As Long) As Long
    Public Declare Function LCMapStringA Lib "kernel32.dll" (ByVal Locale As Long, ByVal dwMapFlags As Long, ByRef lpSrcStr As Any, ByVal cchSrc As Long, ByRef lpDestStr As Any, ByVal cchDest As Long) As Long
    Public Declare Function LCMapStringW Lib "kernel32.dll" (ByVal Locale As Long, ByVal dwMapFlags As Long, ByVal lpSrcStr As Long, ByVal cchSrc As Long, ByVal lpDestStr As Long, ByVal cchDest As Long) As LongPublic Const LCMAP_BYTEREV As Long = &H800
    Public Const LCMAP_FULLWIDTH As Long = &H800000
    Public Const LCMAP_HALFWIDTH As Long = &H400000
    Public Const LCMAP_HIRAGANA As Long = &H100000
    Public Const LCMAP_KATAKANA As Long = &H200000
    Public Const LCMAP_LINGUISTIC_CASING As Long = &H1000000
    Public Const LCMAP_LOWERCASE As Long = &H100
    Public Const LCMAP_SIMPLIFIED_CHINESE As Long = &H2000000
    Public Const LCMAP_SORTKEY As Long = &H400
    Public Const LCMAP_TRADITIONAL_CHINESE As Long = &H4000000
    Public Const LCMAP_UPPERCASE As Long = &H200'主語言ID
    Public Const LANG_CHINESE As Long = &H4'次語言ID
    Public Const SUBLANG_CHINESE_TRADITIONAL As Long = &H1
    Public Const SUBLANG_CHINESE_SIMPLIFIED As Long = &H2
    Public Const SUBLANG_CHINESE_HONGKONG As Long = &H3
    Public Const SUBLANG_CHINESE_SINGAPORE As Long = &H4
    Public Const SUBLANG_CHINESE_MACAU As Long = &H5'排序方式
    Public Const SORT_CHINESE_PRCP As Long = &H0
    Public Const SORT_CHINESE_BIG5 As Long = &H0
    Public Const SORT_CHINESE_UNICODE As Long = &H1
    Public Const SORT_CHINESE_PRC As Long = &H2
    Public Const SORT_CHINESE_BOPOMOFO As Long = &H3'生成LCID
    Public Const LCID_CHINESE_SIMPLIFIED As Long = (LANG_CHINESE Or SUBLANG_CHINESE_SIMPLIFIED * &H400) And &HFFFF& Or SORT_CHINESE_PRCP * &H10000
    Public Const LCID_CHINESE_TRADITIONAL As Long = (LANG_CHINESE Or SUBLANG_CHINESE_TRADITIONAL * &H400) And &HFFFF& Or SORT_CHINESE_BIG5 * &H10000Dim Cn As New ADODB.ConnectionPublic Function BIG5ToGB(Str As String) As String '繁體轉簡體
        Dim szSrc As String
        Dim szDest As String
        
        szSrc = Str
        szDest = String$(Len(szSrc), 0) '僅僅簡繁轉換長度不會變化
        Call LCMapStringW(LCID_CHINESE_SIMPLIFIED, LCMAP_SIMPLIFIED_CHINESE, ByVal StrPtr(szSrc), Len(szSrc), ByVal StrPtr(szDest), Len(szDest))
        
        BIG5ToGB = szDest
    End FunctionPublic Function GBToBIG5(Str As String) As String  '簡體轉繁體
        Dim szSrc As String
        Dim szDest As String
        
        szSrc = Str
        szDest = String$(Len(szSrc), 0) '僅僅簡繁轉換長度不會變化
        Call LCMapStringW(LCID_CHINESE_TRADITIONAL, LCMAP_TRADITIONAL_CHINESE, ByVal StrPtr(szSrc), Len(szSrc), ByVal StrPtr(szDest), Len(szDest))
        
        GBToBIG5 = szDest
        
    End Function
    以下是在Form中在簡體系統下:
      '讀取  
      text1.text=BIG5ToGB(Rst.Fields(0))在繁體系統下:
      '讀取
      text1.text=GBToBIG5(Rst.Fields(0))
      

  5.   

    有没有直接将文本框中的文字都转为UTF-8码的方法呢?因我听说UTF-8码在简繁体直接显示出来
      

  6.   

    教你一个最直接而且最简单的方法~~
    Text1.FontName = "汉仪楷体繁"
    这是设置TEXT1的字体~~如果设置字体为繁体的话那么输入的字就会自动变成繁体~~
    Text1.FontName = "宋体"则字体为宋体~
    这样说法大家应该明白吧?~
      

  7.   

    有什么方法可以做到共用一个My SQL数据库时,程序在繁体和简体系统下使用都不会出现乱码呢?这是我的最终目的