我曾經有問過這樣的問題並且有得到高手們的指點 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
End FunctionPrivate Sub btnBIG5ToGB_Click() txtGB.Text = BIG5ToGB(txtBIG5.Text) End SubPrivate Sub btnGBToBIG5_Click() txtBIG5.Text = GBToBIG5(txtGB.Text) End Sub 以上就是整理過後的資料不過要提醒的是:字體雖然有轉換過來,但由於VB支持有限,大部分文字顯示的時候仍是亂碼
如果是想實現這種功能那更好實現,並且還要來得簡單 把我以前提供的資料化簡一下,放在一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
LCMapString,0804H,04000000H,lpText, -1, addr pszGbs,sizeof pszGbs
;转换Gb码到Unicode码
MultiByteToWideChar,936, 0, addr pszGbs, -1, addr pszGbt,sizeof pszGbt
;转换Unicode码到**码
.....
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支持有限,大部分文字顯示的時候仍是亂碼
不过好象不是你所说的那种,我直接做成.dll文件,不同语言把它翻译后写进去的,根据程序的语言开关进行自由转换.
把我以前提供的資料化簡一下,放在一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))
Text1.FontName = "汉仪楷体繁"
这是设置TEXT1的字体~~如果设置字体为繁体的话那么输入的字就会自动变成繁体~~
Text1.FontName = "宋体"则字体为宋体~
这样说法大家应该明白吧?~