Private Declare Function LCMapString Lib "kernel32" 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 lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
Private Declare Function GetSystemDefaultLCID Lib "kernel32 " () As Long
Private Function GetOSLCID() As Integer
Dim sysLCID As Long
sysLCID = GetSystemDefaultLCID
'&H409(us-英文)&H809(gb-英文) &HC09(au-英文) &H1009(ca-英文)
'&H004(zh-中文)&H404(tw-Big5)&H804(cn-GBK/GB)&HC04(hk-Big5) &H1004(sg-GBK)
'&H804=2052 &H404=1028 &H409=1033 &H809=2057
If sysLCID = &H804 Or sysLCID = &H4 Or sysLCID = &H1004 Then
GetOSLCID = 1 '中文简体
ElseIf sysLCID = &H404 Or sysLCID = &HC04 Then
GetOSLCID = 2 '中文繁体
ElseIf sysLCID Mod 16 = 9 Then
GetOSLCID = 0 '(英文)
Else
GetOSLCID = 0
End If
End Function
Private Function ConvertChineseSimplifiedOrTraditional(ByVal strSrc As String, ByVal bSimplified As Boolean) As String
Dim lngSrcLen As Long
Dim strBuffer As String
lngSrcLen = lstrlen(strSrc)
If lngSrcLen = 0 Then Exit Function
strBuffer = Space(lngSrcLen)
If bSimplified Then '转换为简体
LCMapString &H804, &H2000000, strSrc, lngSrcLen, strBuffer, lngSrcLen
Else
LCMapString &H804, &H4000000, strSrc, lngSrcLen, strBuffer, lngSrcLen
End If
ConvertChineseSimplifiedOrTraditional = strBuffer
End Function
'****** 简繁体互换 GB--> Unicode--> BIG5
Or BIG5--> Unicode--> GB *****************
'参数sStr为需要转换的文本
'参数iConver为要转化的类型,为1时表示繁体到简体的转换,为2时表示简体到繁体的转换
Function GBBIG5(sStr As String, iConver As Integer) As String
On Error Resume Next
Dim STR
If iConver = 1 Then 'BIG5--> GB
STR = StrConv(sStr, vbFromUnicode, &H804)
GBBIG5 = StrConv(STR, vbUnicode, &H404)
ElseIf iConver = 2 Then 'GB--> BIG5
STR = StrConv(sStr, vbFromUnicode, &H404)
GBBIG5 = StrConv(STR, vbUnicode, &H804)
End If
End Function
这是VB6的函数,用法如下:
StrConv(string, conversion, LCID) `VB6
string呢,就是预转换的字符串了(提示一下,也可以使用byte数组)。
conversion: 是一个整数,只决定转换方式,VB里定义了一些常量,如VBFromUnicode、VBUnicode等等,这些不用我解释大家应该也明白了吧。
LCID:哈,这可是VB6新加入的参数了,长整数, 可以指定编码方式, 如&H404,即Big5码, &H804即GBK码,合理运用这个参数,就可以写出一个非常简单的内码转换工具!