商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > VBS字符串编码转换函数代码

VBS字符串编码转换函数代码

  发布于2026-06-29 阅读(0)

扫一扫,手机访问

因为业务需要,经常要处理字符串编码转换的问题。比如从GB2312转到ISO-8859-1,或者反过来。VBScript本身没有直接提供这种跨编码的转换接口,但借助ADODB.Stream这个对象,可以很优雅地实现。

VBS字符串编码转换函数代码

核心思路其实很简单:先把字符串按源编码读成二进制字节流,再按目标编码从字节流还原成字符串。ADODB.Stream正好支持这种“文本模式→二进制模式”的切换,中间通过Flush和Position归零来同步数据。

下面是具体的函数实现,代码里已经加了注释,一目了然。

Const adTypeBinary = 1
Const adTypeText = 2

' 将字符串按指定编码转换为字节数组
Function StringToBytes(Str, Charset)
  Dim Stream : Set Stream = CreateObject("ADODB.Stream")
  Stream.Type = adTypeText
  Stream.Charset = Charset
  Stream.Open
  Stream.WriteText Str
  Stream.Flush
  Stream.Position = 0
  ' 回退到开头,切换为二进制模式读出字节
  Stream.Type = adTypeBinary
  StringToBytes = Stream.Read
  Stream.Close
  Set Stream = Nothing
End Function

' 将字节数组按指定编码转换为字符串
Function BytesToString(Bytes, Charset)
  Dim Stream : Set Stream = CreateObject("ADODB.Stream")
  Stream.Charset = Charset
  Stream.Type = adTypeBinary
  Stream.Open
  Stream.Write Bytes
  Stream.Flush
  Stream.Position = 0
  ' 回退到开头,切换为文本模式读出字符串
  Stream.Type = adTypeText
  BytesToString = Stream.ReadText
  Stream.Close
  Set Stream = Nothing
End Function

' 将字符串从一种单字节编码转换为另一种单字节编码
Function AlterCharset(Str, FromCharset, ToCharset)
  Dim Bytes
  Bytes = StringToBytes(Str, FromCharset)
  AlterCharset = BytesToString(Bytes, ToCharset)
End Function

三个函数分别对应“字符串→字节”、“字节→字符串”和“编码转换”。其中AlterCharset是把前两个函数组合起来,一步到位。需要注意的是,这里假设源和目标都是单字节编码(如windows-1252、windows-1251、GB2312等),如果涉及Unicode类的多字节编码,写法会稍有不同,但原理类似。

使用起来也很直接:

dim s1, s2, FromCharset, ToCharset
s1 = "我的字符串之"
FromCharset = "GB2312"
ToCharset = "ISO-8859-1"
s2 = AlterCharset(s1, FromCharset, ToCharset)

上面这段代码会把“我的字符串之”从GB2312编码转成ISO-8859-1编码。注意,ISO-8859-1是西欧字符集,中文汉字会变成乱码,这恰恰是编码转换的典型场景——比如你要把数据写入一个只支持Latin-1的旧系统,或者需要和某些硬件设备交互。

如果你在工作中遇到类似需求,不妨直接拿这两个函数去用。灵活调整Charset参数,就能在各种编码之间自由切换了。

本文转载于:https://www.jb51.net/article/280831.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

产品推荐

热门关注