ASP 二进制与字符串互转, 另类完美解决方法, adodb.stream 实现 By shawl.qiu
-
ASP 二进制与字符串互转, 另类完美解决方法, adodb.stream 实现 By shawl.qiu
摘要:
本文实现了使用 ASP 内建组件 adodb.stream 进行任何字符集编码的 二进制转字符串 与 字符串转二进制 的互转操作.说明:
要实现二进制流转字符串操作, 可以说很容易, 容易转换的是 us-ascii 字符集的二进制流转字符串, 到处是这种标准的资料.有点难度的是 gb2312字符集 二进制流转字符串, gb2312字符集 每个中文占用两个字节空间, 这很容易计算, 因为有相关资料.
高难度的是 unicode字符集 二进制流转字符串, unicode字符集 每个中文占用三个字节的空间, 我翻遍了相关的权威网站, 没有一个站点有 unicode字符集 与 二进制流 的相关介绍, 所以说是高难度. 若有相关标准文档, 干什么都很轻松, 前提是芽菜文要过关.
最后, 经过俺差不多十小时的奋斗, 终于发现了使用 asp adodb.stream 内建组件 可以轻松的搞定任何编码的二进制流与字符串的互转. 🙂
目录:
1. ascii 字符集 二进制流转字符串函数
2. gb2312 字符集 二进制流转字符串函数
3. adodb.stream 字符串转二进制流函数 与 二进制流转字符串函数 及演示操作shawl.qiu
2006-09-26
http://blog.csdn.net/btbtd1. ascii 字符集 二进制流转字符串函数
- linenum
- <%
- private function bTsAscii(bin)
- '二进制转为 string (bmp|gif|png|jpg)
- dim i, iByt, sByt, bLen:bLen=lenB(bin)
- for i=1 to bLen
- sByt=midB(bin,i,1):iByt=ascB(sByt)
- if iByt<128 then
- bTsAscii=bTsAscii&chr(iByt)
- else:i=i+1
- if i<=bLen then bTsAscii=bTsAscii&chr(ascW(sByt&sByt))
- end if
- next 'shawl.qiu code'
- end function
- %>
2. gb2312 字符集 二进制流转字符串函数
- linenum
- <%
- private function bTsGb2312(bin)
- '二进制转为 string | gb2312 编码
- dim i, iByt, sByt, bLen:bLen=lenB(bin)
- for i=1 to bLen
- sByt=midB(bin,i,1):iByt=ascB(sByt)
- if iByt<128 then
- bTsGb2312=bTsGb2312&chr(iByt)
- else
- bTsGb2312=bTsGb2312&chr(ascW(midB(bin,i+1,1)&sByt))
- i=i+1
- end if
- next 'shawl.qiu code'
- end function
- %>
3. adodb.stream 字符串转二进制流函数 与 二进制流转字符串函数 及演示操作
- linenum
- <%
- dim str:str="adodb.stream 实现 二进制与字符串的互转 By Shawl.qiu"
- response.write "字符串转二进制 response.binaryWrite sTb(str, ""utf-8""):<br/>"
- response.binaryWrite sTb(str, "utf-8")
- response.write "<p/>二进制转字符串 response.write bTs(midB(sTb(str, ""utf-8""),1),""utf-8"")<br/>"
- response.write bTs(midB(sTb(str, "utf-8"),1),"utf-8")
- function sTb(str, charSet)
- '''''''''''''''''''''''''''''
- ' 字符串转二进制函数 By shawl.qiu
- ' http://blog.csdn.net/btbtd
- ''''''''''''''''
- ' 参数说明
- ''''''''''
- ' str: 要转换成二进制的字符串
- ' charSet: 字符串默认编码集, 如不指定, 则默认为 gb2312
- ''''''''''
- ' sample call: response.binaryWrite sTb(str, "utf-8")
- '''''''''''''''''''''''''''''
- dim stm_
- set stm_=createObject("adodb.stream")
- with stm_
- .type=2
- if charSet<>"" then
- .charSet=charSet
- else
- .charSet="gb2312"
- end if
- .open
- .writeText str
- .Position = 0
- .type=1
- sTb=.Read
- .close
- end with 'shawl.qiu code'
- set stm_=nothing
- end function
- function bTs(str, charSet)
- '''''''''''''''''''''''''''''
- ' 二进制转字符串函数 By shawl.qiu
- ' http://blog.csdn.net/btbtd
- ''''''''''''''''
- ' 参数说明
- ''''''''''
- ' str: 要转换成字符串的二进制数据
- ' charSet: 字符串默认编码集, 如不指定, 则默认为 gb2312
- ''''''''''
- ' sample call: response.write bTs(midB(sTb(str, "utf-8"),1),"utf-8")
- '''''''''''''''''''''''''''''
- ' 注意: 二进制字符串必须先用 midB(binaryString,1) 读取(可自定读取长度).
- '''''''''''''''''''''''''''''
- dim stm_
- set stm_=createObject("adodb.stream")
- with stm_
- .type=2
- .open
- .writeText str
- .Position = 0
- if charSet<>"" then
- .CharSet = charSet
- else
- .CharSet = "gb2312"
- end if
- bTs=.ReadText
- .close
- end with 'shawl.qiu code'
- set stm_=nothing
- end function
- %>
版权声明:本文为btbtd原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。