VB6用API实现繁体简体转换

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码,合理运用这个参数,就可以写出一个非常简单的内码转换工具!

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值