Access911.net   |   a9BBS   |   OTaA System  
  搜索文章:  
Access911欢迎您光临  
   主页      上传      繁體版       论坛     
设为首页  |  加入收藏   
  
你现在的位置:文章索引 -> 文章分类 -> 函数  
 首页|  近日更新|  下载  |  文章索引  |  搜索|  术语|  承接工程|  
 
系统正在加载内容,请耐心等待...
 
 查询
 窗体
 报表
 
 
 VBA
 函数
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 发布
 OA
 ASP/ASP.NET
 其他语言
 控件
 DELPHI
 C#/.Net
 本站
 其他
 小例程
 常用软件
 参考文档
 业主作品
 网友大作
 
 
友情链接
 access911.net
 
访问人次
 1702062
 
站长 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 订阅

显示附加信息 >>>

如何进行编码转换?比如简体到繁体?

作者:cg1  摘自:access911.net  :cg1  更新日期:2005-10-3  浏览人次:

 

问题:

如何进行编码转换?
我想用vba创建一个utf-8格式的txt文件,然后将普通字符串写入该文件,当在ie下用utf-8编码浏览该文本文件,能够正确显示其中的中英文和标点符号。

 


方法一:

用ADO 的 STREAM 对象的 CHARSET 属性来进行转换:
Function tran_ado(ByVal strA As String, _
                  Optional ByVal strInCode As String = "gb2312", _
                  Optional ByVal strOutCode As String = "big5") As String
'本函数进行编码转换。
'对应的 strInCode 和 strOutCode 在注册表以下位置中能找到
'HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Charset

'请先引用 Microsoft ActiveX Data Objects 2.5 Library
'或者以上版本

    Dim Stm As New ADODB.Stream
    '默认情况下是将简体中文转换为繁体中文
    
    Stm.Type = adTypeText
    Stm.Mode = adModeUnknown
    Stm.Open
    Stm.Charset = strOutCode
    Stm.WriteText strA
    Stm.Position = 0
    Stm.Type = adTypeText
    Stm.Charset = strInCode
    tran_ado = Stm.ReadText()
    Stm.Close
End Function



注意!由于一些简体字在繁体系统中根本不存在,所以用 stream 转码后还会存在很多问号。

Function runTest()
    Dim objFile, stmFile
    Dim strText As String
    Set objFile = CreateObject("Scripting.FileSystemObject")
    Set stmFile = objFile.OpenTextFile("c:\abc.txt", 1, False)
    strText = stmFile.ReadAll
    strText = tran_ado(strText, "gb2312", "utf-8") '出来的就是 UTF-8 了
    stmFile.Close
    Set stmFile = objFile.CreateTextFile("c:\abc_tr.txt", True)
    stmFile.Write strText
    stmFile.Close
End Function

 

方法二:

将所有的需要转换的文本保存在某个 ACCESS 表的备注字段中,然后下载
    OFFICE 简繁体转换加载项 (tcscconv.msi)
    http://access911.net/index.asp?u1=f&u2=79FAB61E

用 VBA 编程调用插件转换整个表,然后再从表中读取已经转换编码的文本即可
查两句,这里也许有很多网友看过下述文章:
    两个未公开的ACCESS方法的使用技巧 
    http://access911.net/?kbid;71FAB61E10DCEFF3

想用编程的方式直接转一个已经编写好的 ACCESS 简体软件到 ACCESS 繁体软件。其实也能使用加载项来辅助简化一部分工作。比如:
1、SAVEASTEXT 以后用 FSO READALL 读取全部文本并直接将文本以字符串形式保存为某个临时表的备注字段
2、在 ACCESS 中编程控制菜单,调用插件,转换整个表
3、编程将备注中的文本全部导出为 TXT 文本文件
4、在繁体系统中用 LoadFromText 方法读取整个TXT文本文件即可
但是注意,MDB 格式尽量使用 2000 格式,ACCESS 版本倒没什么很大关系,如果遇上 CRC 校验错误就换台机器再试验一下,不是每次必定出错的。还有,每个控件的控件名尽量使用英文,用中文很可能会出错误。

相关内容你也可以参考:http://bbs.office-cn.net/dispbbs.asp?boardID=151&ID=17841&page=1

 


方法三:

用字符表逐一比对的方法来进行转换

待续。。。

注意!由于语言转换是语言学而不是计算机学的问题,所以将简、繁体转换系统不可能尽善尽美。举个最简单的例子:简体的“程序”在转换成繁体后应该是“程式”,“软件”应该被转换成“軟体”。这些问题都不在本文的讨论范围。

 

本站文章旨在为该问题提供解决思路及关键性代码,并不能完成应该由网友自己完成的所有工作,请网友在仔细看文章并理解思路的基础上举一反三、灵活运用。

access911.net 原创文章,作者本人对文章保留一切权利。
如需转载必须征得作者同意并注明本站链接

 

 
相关文章
     没有手动相关文章
     如何解决中文、汉字、文字转拼音的问题?
 
评论
     查看或发表更多的评论,请单击这里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期:2000年4月2日  |  设计施工:陈格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陈格 保留所有权利