二进字格式转换成字符串的一个算法,用ADODB.Stream实现!如果可以不用临时文件可以解决吗?

citymice 2003-09-14 03:30:20
'---- StreamTypeEnum Values ----
Const adTypeBinary = 1
Const adTypeText = 2

'---- SaveOptionsEnum Values ----
Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2

Function Bytes2bStr(vin)
Dim BytesStream,TempFile,StringReturn

TempFile = Server.MapPath("temp.txt") '定义一个临时文件

Set BytesStream = Server.CreateObject("ADODB.Stream") '建立一个流对象
With BytesStream
.Type = adTypeBinary '设置流对象的类型为字节流
.Open '打开流对象
.Write vin '把vin写入流对象中
.SaveToFile TempFile,adSaveCreateOverWrite '把流对象的内容写入临时文件,如文件存在就覆盖
.Close '关闭流对象

.Type = adTypeText '设置流对象的类型为字符流
.Charset = "GB2312" '设置流对象的编码方式为GB2312
.Open '打开流对象
.LoadFromFile TempFile '按指定的编码方式从刚才的临时文件中读取内容到流对象
StringReturn = .ReadText '把流对象的内容保存在StringReturn变量中
.close '关闭流对象
End With
Set BytesStream = Nothing '销毁流对象

Bytes2bStr = StringReturn
End Function
...全文
93 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinahuman 2003-09-16
  • 打赏
  • 举报
回复
不会吧,我用它来转换网页都可以转的呀
aabiao 2003-09-16
  • 打赏
  • 举报
回复
楼主:你的二进制格式是怎么得到的,又想干些什么?
smuzy 2003-09-15
  • 打赏
  • 举报
回复
就是直接省略掉保存文件的过程就行了
smuzy 2003-09-15
  • 打赏
  • 举报
回复
js:
function BytesToBstr(body)
{
var objstream = new ActiveXObject('ADODB.Stream');
objstream.Type = 1;
objstream.Mode = 3;
objstream.Open;
objstream.Write(body);
objstream.Position = 0;
objstream.Type = 2;
objstream.Charset = 'GB2312';
return objstream.ReadText ;
objstream.Close;
}
vbs:
function BytesToBstr(body)
dim objstream
set objstream = server.CreateObject ("ADODB.Stream")
objstream.Type = 1
objstream.Mode = 3
objstream.Open
objstream.Write(body)
objstream.Position = 0
objstream.Type = 2
objstream.Charset = "GB2312"
BytesToBstr = objstream.ReadText
objstream.Close
end function
citymice 2003-09-14
  • 打赏
  • 举报
回复
楼上的老大,如果二进制数据里面有中文编码的信息,用这个函数做出来会是乱编码,到现在为止,csdn上面还没有那个人给出 ansi->gb2312->utf-8之类的编码转换算法,有人知道吗,高分散点数!!!1
sailor001 2003-09-14
  • 打赏
  • 举报
回复
我也想知道
citymice 2003-09-14
  • 打赏
  • 举报
回复
大哥,我被这个问题折磨了2天了,昨天晚上搞到4点钟。
2楼的朋友给出的函数google都是,的确可以转换,但是只支持E文

如果二进制里面包含了任何编码方式的中文信息,用这个函数是转不过来的

郁闷中....
chinahuman 2003-09-14
  • 打赏
  • 举报
回复
用这个函数看是不是你想要的?
Function bytes2BSTR(vIn)'vIn就是你要转换的二进制流
Dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,NextCharCode
strReturn = ""

For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next
bytes2BSTR = strReturn
End Function
aabiao 2003-09-14
  • 打赏
  • 举报
回复
我真不明白现在的软件是怎么考虑的,文本文件(或字符)是二进制文件(或字符)的特例,可系统只有处理文本的有关方法,却没有二进制的方法。本来语言只是显示的时候有用,可现在怎么内部存储、处理均按UNICODE?看来UNICODE带来的方便远比带来的麻烦大。若有关字符串、文件内部都按二进制进行处理,根本就不会有这么大的问题。
VFP很好,一切是按二进制进行的,所以根本不存在任何问题。可我用DLL把二进制传递到VB时系统自作多情地自动转成UNICODE(已经不能转回来了),都是UNICODE惹的祸!
不知哪位能有办法?
楼主:不知你的主要用途是什么,看能否绕过去?我看2楼的程序应该是可以的吧?!

希望大家多讨论有关编码转换的问题,就象楼上说的:
“到现在为止,csdn上面还没有那个人给出 ansi->gb2312->utf-8之类的编码转换算法”

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧