用SQL语句将数据插入到access数据库中,数据就可以全变成繁体字了
---------------------------------------------------------------------------------------------------------------------
Private Sub Command2_Click()
Dim tTable() As Integer
Dim tString As String
tString = TextGetByFile( "简易版本FormMain.frm ") '源文件
tTable() = GBToBig5TableGetByFile( "GBToBig3.TAB ") '读转换表
tString = ReplaceTextGBToBig5(tString, tTable(), Text1)
TextPutToFile "简易版本BG5.txt ", tString '写目的文件
End Sub
Function TextPutToFile(ByVal pFileName As String, pText As String)
'写文本到文件
Dim tFileNumber As Integer
Dim tBytes() As Byte
tFileNumber = FreeFile
Open pFileName For Output As #tFileNumber
Close #tFileNumber
Open pFileName For Binary As #tFileNumber
If Not pText = " " Then
tBytes() = StrConv(pText, vbFromUnicode)
Put tFileNumber, 1, tBytes()
End If
Close #tFileNumber
End Function
Function TextGetByFile(ByVal pFileName As String) As String
'从文件获得多行文本。
Dim tOutText As String
Dim tFileNumber As Integer
Dim tBytes() As Byte
tFileNumber = FreeFile
Open pFileName For Binary As #tFileNumber
If CBool(LOF(tFileNumber)) Then
ReDim tBytes(LOF(tFileNumber) - 1)
Get tFileNumber, 1, tBytes()
tOutText = StrConv(tBytes, vbUnicode)
Else
MsgBox "警告:文件 " & pFileName & "是空的! ", vbOKOnly, "文件无内容 "
End If
Close #tFileNumber
TextGetByFile = tOutText
End Function
Function ReplaceTextGBToBig5(ByVal pString As String, ByRef pTable() As Integer, Optional ByRef pViewText As TextBox = Nothing) As String
'转换GBK文本为Big5码。
Dim tOutString As String
Dim tIndex As Long
Dim tIndexOver As Long
Dim tAscii As Integer
Dim tCacheStr As String
Dim tCacheSize As Long
tIndexOver = Len(pString)
tCacheSize = Sqr(tIndexOver) + 1
For tIndex = 1 To tIndexOver
tAscii = Asc(Mid(pString, tIndex, 1))
tCacheStr = tCacheStr & Chr(pTable(tAscii))
If Not CBool(tIndex Mod tCacheSize) Then
tOutString = tOutString & tCacheStr
tCacheStr = " "
If Not pViewText Is Nothing Then
pViewText.Text = (tIndex * 100) \ tIndexOver
End If
End If
Next
If Not tCacheStr = " " Then
tOutString = tOutString & tCacheStr
tCacheStr = " "
End If
ReplaceTextGBToBig5 = tOutString
End Function
Function GBToBig5TableGetByFile(ByVal pFileName As String) As Integer()
'读GBK转Big5转换表文件
Dim tOutTable(-32768 To 32767) As Integer
Dim tFileNumber As Integer
tFileNumber = FreeFile
Open pFileName For Binary As #tFileNumber
Get #1, 1, tOutTable()
Close #tFileNumber
GBToBig5TableGetByFile = tOutTable()
End Function
-------------------------------------------------------------------------------------------------------------------
以上代码其实功能很单一:将GBK文本转换为BIG5。之所以能满足你的繁体需要是因为VB工程文件是文本格式的,仅仅可以保证你的工程代码成为繁体。
系统控件以及其他编译后的控件是二进制格式的,很难准确转换。我猜想:系统控件的语言和你安装的系统有关。究竟是不是这样,你自己试验一下就知道了。
根据我平时观察的现象:一些繁体软件在我的系统上用到的系统控件都是简体中文的,因此出现繁体/简体混杂现象,搞得我不得不用南极星“Auto”方式来自动识别。
根据这种现象,可能你的程序做成繁体后会出现如下现象:
1、在简体系统工作:系统控件是简体,程序本身的文字是繁体。
2、在繁体系统工作:系统控件是繁体,程序本身的文字是繁体。
如果打包工具携带有简体控件,并且安装到对方繁体系统下,则现象可能和(1)是相同。不妨先将代码转换之后编译为一个测试品,交给台方繁体系统测试一下就知道了。
寻求彻底的解决办法可以看看MSDN上的“多语言”部分相关内容,我对这部分并不熟悉。
另外,如果你将代码拷贝到繁体系统下以繁体VB编译,我想可以解决问题。因为转换为BIG5码后的代码和在繁体下编写出来的代码性质是一样的。这个办法比较保险一些。