繁简转换的问题
如何把繁体中文和简体中文进行自由转换?
注意:不是big2GB或者GB2BIG
是繁简转换:
例如:
“中国”转换为“中國”
问题点数:50、回复次数:19Top
1 楼sunxl(小呆)回复于 2005-10-15 15:00:17 得分 0
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
Private Sub Command1_Click()
Text2.Text = GBBIG5(Text1.Text, 2)
End Sub
Private Sub Command2_Click()
Text1.Text = GBBIG5(Text2.Text, 1)
End Sub
Top
2 楼sunxl(小呆)回复于 2005-10-15 15:04:34 得分 0
不好意思没看清楚 呵呵Top
3 楼sunxl(小呆)回复于 2005-10-15 15:24:27 得分 3
你自己看看吧 找到了一篇文章 我现在没有时间 等有时间在好好看看
用途5:
繁简转换,中英转换,一般对控件标题、提示文字、默认值等进行文字上繁简转换后并不能真正实现繁简转换,在转换后相应的环境中打开还会出现ACTIVEX控件找不到或者OLE错误,将窗体或其它对象转换为文本文件后再进行繁简转换,然后再转换相应的字符集、字体名称、节的繁简对应名称、CRC校验码等之后,再导回ACCESS相应对象,就可完成整个ACCESS程序的转换,相应的程序效果可参见我做的繁简转换通用程序,记住简体一般是134 繁体是136 英文你打开就知了。我奉劝,如果你想做同样的功能,那你最好就别做了,用我的就得了,免得断我财路,我提成20%给你就得了,等两年后积到100元我再一次汇给你:)
http://www.office-cn.net/Article/Class5/Class21/200312/262.htmlTop
4 楼wumylove1234(毁于随)回复于 2005-10-15 15:27:32 得分 3
哪里会有编码的说明呢?我想制定Unicode标准的组织的网站上应该会有.Top
5 楼sunxl(小呆)回复于 2005-10-15 15:57:05 得分 5
用Word
Private Sub Command3_Click()
Text2.Text = callWordTCSCTranslate(Text1.Text)
End Sub
Private Sub Command4_Click()
Text2.Text = callWordSCTCTranslate(Text1.Text)
End Sub
Function callWordTCSCTranslate(Text As String) As String ' 繁体2简体
Dim Word As Object, retText As String
On Error Resume Next
Set Word = CreateObject("Word.Basic")
Word.FileNew
Word.Insert Text
Word.EditSelectAll
Word.ToolsTCSCTranslate Direction:=0, Varients:=0, TranslateCommon:=0
'取返回值
retText = Word.Selection$()
callWordTCSCTranslate = Left$(retText, Len(retText) - 1)
Word.FileClose 2
Set Word = Nothing
End Function
Function callWordSCTCTranslate(Text As String) As String ' 简体2繁体
Dim Word As Object, retText As String
On Error Resume Next
Set Word = CreateObject("Word.Basic")
Word.FileNew
Word.Insert Text
Word.EditSelectAll
Word.ToolsSCTCTranslate Direction:=0, Varients:=0, TranslateCommon:=0
'取返回值
retText = Word.Selection$()
callWordSCTCTranslate = Left$(retText, Len(retText) - 1)
Word.FileClose 2
Set Word = Nothing
End FunctionTop
6 楼shawls(VB Fan)(QQ:9181729)回复于 2005-10-16 19:34:46 得分 0
楼1:那个代码我贴的天南海北到处有了,不用重复了
楼3:研究中
楼4:找资料中...
楼5:这个不现实,我是要把整个东西放到SourceCode Explorer里面作为一个功能的,不可能带个word把Top
7 楼shawls(VB Fan)(QQ:9181729)回复于 2005-10-16 19:35:28 得分 0
sorry
我很少看用户名,
楼上几个帖子,都是一个人的:)Top
8 楼shawls(VB Fan)(QQ:9181729)回复于 2005-10-16 23:32:19 得分 0
没有人回答么?
或者说,周末都在休息?!Top
9 楼liujingxiong()回复于 2005-10-18 08:56:34 得分 2
我自己做了一个繁体和简体互转的软件,用的是笨方法,就是用2个字符串做数据库,字符串1里放的是所有可能用到的简体字,字符串2里放的是和字符串1相对应的繁体字,需要替换时只要找到在字符串的位置就可以直接替换了。Top
10 楼zyg0(影子(被评为本年度最可爱流氓)回复于 2005-10-18 09:03:34 得分 0
我只有编码的转换。。。Top
11 楼shawls(VB Fan)(QQ:9181729)回复于 2005-10-18 20:39:20 得分 0
难道我只能带GBK的字库?Top
12 楼wumylove1234(毁于随)回复于 2005-10-21 08:50:42 得分 0
顶!Top
13 楼aohan(aohan)回复于 2005-10-21 20:08:35 得分 2
用.net
'转为简体
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox2.Text = StrConv(TextBox1.Text, VbStrConv.TraditionalChinese)
End Sub
'转为繁体
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox1.Text = StrConv(TextBox2.Text, VbStrConv.SimplifiedChinese)
End SubTop
14 楼shawls(VB Fan)(QQ:9181729)回复于 2005-10-21 22:21:51 得分 0
兄弟,等于没说啊
我的是VB6的版本
不可能为了这个
我重写整个软件吧Top
15 楼lc_mtt(柠檬把大飞猪裤子一脱...被大飞猪投诉了)回复于 2005-11-03 02:21:43 得分 30
记得给分哟,用API实现的,快速简单
Option Explicit
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
Dim STf As String '繁体字符串
Dim STj As String '简体字符串
Dim STlen As Long '待转换字串长度
Private Sub Command1_Click() 'Gb码简体转繁体
STj = "中华人民共和国"
STlen = lstrlen(STj)
STf = Space(STlen)
LCMapString &H804, &H4000000, STj, STlen, STf, STlen
Debug.Print STf
End Sub
Private Sub Command2_Click() 'Gb码繁体转简体
STf = "中華人民共和國"
STlen = lstrlen(STf)
STj = Space(STlen)
LCMapString &H804, &H2000000, STf, STlen, STj, STlen
Debug.Print STj
End Sub
特别提醒:VB 的 StrConv 函数可以将港台繁体与国标繁体互相转换
Top
16 楼cqq_chen(我是谁)回复于 2005-11-06 13:07:04 得分 0
请问lc_mtt(柠檬):有在繁体系统下试过吗?例如在繁体win2000中有一个access文件,ACCESS中的数据是简体的,可以直接用你说的方法转成繁体的吗?如果可以我开贴给你分。Top
17 楼eslbs(书林跋涉)回复于 2005-11-08 14:56:41 得分 5
Option Explicit
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
Function GBBIG5(sStr As String, iConver As Integer) As String
On Error Resume Next
Dim STf As String ', 繁体字符串
Dim STj As String ', 简体字符串
Dim STlen As Long ', 待转换字串长度
Dim STR
If iConver = 1 Then 'BIG5-->GB
STR = StrConv(sStr, vbFromUnicode, &H804)
STf = StrConv(STR, vbUnicode, &H404)
STlen = lstrlen(STf)
STj = Space(STlen)
LCMapString &H804, &H2000000, STf, STlen, STj, STlen
GBBIG5 = STj
ElseIf iConver = 2 Then 'GB-->BIG5
STj = sStr
STlen = lstrlen(STj)
STf = Space(STlen)
LCMapString &H804, &H4000000, STj, STlen, STf, STlen
STR = StrConv(STf, vbFromUnicode, &H404)
GBBIG5 = StrConv(STR, vbUnicode, &H804)
End If
End Function
Private Sub Command1_Click()
Debug.Print GBBIG5(GBBIG5("中国人", 2), 1)
End Sub
Top
18 楼shawls(VB Fan)(QQ:9181729)回复于 2005-11-09 20:51:07 得分 0
我修改了一下
Option Explicit
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
Function GBBIG5(ByVal sStr As String, Optional iConver As Boolean = True) As String
On Error Resume Next
Dim STf As String ', 繁体字符串
Dim STj As String ', 简体字符串
Dim STlen As Long
STf = sStr
STj = sStr
STlen = VBA.LenB(STj)
If iConver Then 'BIG5-->GB
LCMapString &H804, &H2000000, STf, STlen, STj, STlen
GBBIG5 = STj
Else 'GB-->BIG5
LCMapString &H804, &H4000000, STj, STlen, STf, STlen
GBBIG5 = STf
End If
End Function
Top
19 楼seehill(学习中......)回复于 2006-03-17 22:48:56 得分 0
markTop




