首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • xml 转换中文编码 [已结贴,结贴人:jiewenxu]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jiewenxu
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-03-29 19:57:35 楼主
    我有一个文件利用XML.SAVE()函数自动保存XML文件作为缓存
    现在我有一个客户使用美国的服务器
    这个服务器不支持用gb2312编码写入文件
    比如用FSO写中文会出错

    现在XML文件中有部分节点是包含中文的
    我担心XML.SAVE()也会因此出错

    请高手回答我的担心是否是多余的
    XML.SAVE()是否会因为包含中文字符也和FSO一样出错

    如果会出错,请告知解决方法
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinmo
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

      6

    发表于:2008-03-29 20:01:321楼 得分:10
    那就使用uft-8啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jiewenxu
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-03-29 20:18:232楼 得分:0
    ASP中xml.save()如何指定保存文件的格式呢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • smartcatiboy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-03-30 11:46:523楼 得分:10
    不会
    xml会根据charset转换读取模式,只要你写了charset就没问题,否则会默认以utf或者unicode读取,这才会出错。

    fo的读写方式是操作系统默认,手动可以转换成unicode,不支持utf8,所以会出错
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • smartcatiboy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-03-30 11:48:284楼 得分:10
    要改变编码,可以用这种笨办法
    dim xddutf,xddgb2312
    set xddutf=createobject("msxml.domdocument")
    set xddgb2312=createobject("msxml.domdocument")
    xddutf.loadxml " <?xml version='1.0' encoding='utf-8'?> <tmp/>"
    xddgb2312.load "你的xml"
    set xddutf.documentelement=xddgb2312.documentelement
    xddutf.save "你的xml"
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • superwfei
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-03-30 11:53:125楼 得分:5
    一般 xml 文件都是 utf 格式的,应该不存在保存 xml 时出现错误
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinmo
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

      6

    发表于:2008-03-30 13:17:476楼 得分:5
    先把中文转换一下再写进去,转换成可以支持的格式,再用FSO写进去
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • superwfei
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-03-30 13:22:427楼 得分:10
    使用 ado.stream 读写文件,比 fso 好用写,支持各种编码

    fso 只支持 ansi 和 unicode
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • whiteamoon
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-03-30 18:57:308楼 得分:35
    关于你的问题 分为两部分来看:

    1、“fso 只支持 ansi 和 unicode” 这句话这么说问题不大 FSO对UTF-8的支持不是很好
    所以一般这种问题都是采用AdoDb.Stream来解决 楼上的文盲说的很对^_^
    UTF-8作为最大字符集了 就无所谓服务器支持不支持中文,只是FSO的问题
    function ReadFromTextFile (FileUrl,CharSet)
    dim str
    set stm=server.CreateObject("adodb.stream")
    stm.Type=2 '以本模式读取
    stm.mode=3
    stm.charset=CharSet
    stm.open
    stm.loadfromfile server.MapPath(FileUrl)
    str=stm.readtext
    stm.Close
    set stm=nothing
    ReadFromTextFile=str
    end function


    2、其实上面的问题解决了XML.save()就是随便说一下
    XML.load之后都是 unicode编码的 输出的编码取决你要求服务器的编码格式 也就是CODEPAGE的概念
    我一开始以为你打算用XML.save()代替FSO保存HTML 当然是完全可以的 不过你只是想保存XML的话 就无所谓了

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • smartcatiboy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-03-30 20:03:449楼 得分:15
    为了分数,厚着脸皮再来画蛇添足

    Msxml.domdocument在装入文件时,会动态改变编码,在读取xml文件头部的 <?xml?>指令之前,使用utf读取,由于其均为ascii,所以不会有歧义;
    若含有charset选项,则dom转换读取方式,以charset的方式读取,例如gb2312、gbk、x-ansi。
    若不含charset方式,则会以utf和unicode尝试。

    msxml支持大部分的编码方式,所以只要你charset设置了,是不会有问题的。但如果没有设置,就得是unicode或者utf才能不出问题。

    修改 删除 举报 引用 回复

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