首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 使用 filesystemobject 对象建立的文件,在 adodb.stream 中读取的问题。 [已结贴,结贴人:kernelj]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-06 14:38:21 楼主
    使用 filesysytemobject 建立的 unicode 文件在 filesystemobject 中使用 OpenTextFile 读取时候乱码,经查 filesystemobject  似乎无法在读取的时候设置编码。

    后来改用 adodb.stream 对象来读文件,并且指定为 utf-8 编码,发现无法读取建立的文件。有一个奇怪之处就是,当我把文件下载回来使用 dreamweaver 打开并且另存之后,发觉同一个文件会相差10多kb,把另存的文件上传之后就可以正确读出。

    不知道如何解决,为什么使用 filesystemobject 建立的文件使用 dw 打开之后就会变小呢?为什么同一个文件重新使用 dw 打开保存之后就可以使用 adodb.stream 读出呢?望大家帮忙。^^
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-09 10:17:031楼 得分:0
    dreamweaver 有时候就会有编码或者是其他问题.
    这个问题我还没看明白.
    同一个文件重新使用 dw 打开保存之后就可以使用 adodb.stream 读出
    现在问题是什么呢??
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 01:51:482楼 得分:0
    有问题先问google
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 11:44:243楼 得分:10
    OpenTextFile(文件路径, 1, False, -1)

    or

    用ADODB.Stream的话,CharSet设置成unicode,Unicode和UTF-8不是一码事
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • showbo
    • 等级:
    发表于:2008-05-16 14:30:364楼 得分:40
    先获取编码,再设置stream的编码,参考下面的代码

    VBScript code
    'ANSI         无格式定义; 'Unicode        前两个字节为FFFE; 'Unicode big endian  前两字节为FEFF; 'UTF-8         前两字节为EFBB; Function checkFileEncoder(FilePath) Dim stream, binheader Set stream = Server.CreateObject("adodb.stream") stream.Type = 1'设置为2进制,主要是为了判断文件编码 stream.Mode = 3 'forreadwrite stream.Open stream.LoadFromFile FilePath stream.position = 0 binheader = stream.read(2) stream.Close Set stream = Nothing If LenB(binheader) = 1 Then checkFileEncoder = "gb2312" If AscB(MidB(binheader, 1, 1)) = &HEF And AscB(MidB(binheader, 2, 1)) = &HBB Then checkFileEncoder = "utf-8" ElseIf AscB(MidB(binheader, 1, 1)) = &HFF And AscB(MidB(binheader, 2, 1)) = &HFE Then checkFileEncoder = "unicode" Else checkFileEncoder = "gb2312" End If End Function Sub Read(FilePath) Dim stream, fileEncoder fileEncoder = checkFileEncoder(FilePath) '获取文件编码格式 Set stream = Server.CreateObject("adodb.stream") stream.Charset = fileEncoder '设置编码格式 stream.Type = 2 stream.Mode = 3 stream.Open stream.LoadFromFile FilePath MyResponse.Write stream.ReadText() stream.Close Set stream = Nothing End Sub call Read(Server.MapPath("data.txt"))
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved