新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论SVG, GML, X3D, VRML, VML, XAML, AVALON, Batik等基于XML的图形技术,以及有关GIS的应用。
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 SVG/GML/VRML/X3D/XAML 』 → [求助]ASP动态生成SVG过程中的字符编码问题 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 6044 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [求助]ASP动态生成SVG过程中的字符编码问题 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     EricForSVG 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:6
      积分:121
      门派:XML.ORG.CN
      注册:2007/5/28

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给EricForSVG发送一个短消息 把EricForSVG加入好友 查看EricForSVG的个人资料 搜索EricForSVG在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看EricForSVG的博客楼主
    发贴心情 [求助]ASP动态生成SVG过程中的字符编码问题

    以下是ASP程序,也是论坛的前辈给出的:
    <%
    Response.Clear
    Response.Buffer = True
    Dim xmlDom, xslDom, strResult
    Set xmlDom = Server.CreateObject("Msxml2.DOMdocument")
    Set xslDom = Server.CreateObject("Msxml2.FreeThreadedDOMdocument")
    xmlDom.async = False
    xslDom.async = False
    xmlDom.load Server.MapPath("zhandian.xml")
    xslDom.load Server.MapPath("zhandian.xsl")

    Response.ContentType = "image/svg+xml"
    strResult = xmlDom.transformNode(xslDom)
    ' 在不支持UTF-16编码的平台上,替换成UTF-8
    strResult = Replace(strResult,"UTF-16","UTF-8")
    Response.Write strResult
    %>
    其中,我设想是zhandian.xml从数据库生成的(目前是用文本编辑器写的),编码类型为utf-8;zhandian.xsl(里面包含中文和静态的图形,我用Windows文本编辑器保存时编码类型为utf-8)用于将xml文档装换为SVG文件
    程序运行没问题,可显示图形,但中文看不见,查看生成的SVG里中文均为乱码,并造成Adobe SVG Viewer解析错误。
    翻了论坛里的一些相关问题的帖子,感觉是Msxml读取文件时,没有正确识别中文字符,不知道大家有没有好的解决方法,望赐教~~~


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/28 17:07:00
     
     EricForSVG 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:6
      积分:121
      门派:XML.ORG.CN
      注册:2007/5/28

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给EricForSVG发送一个短消息 把EricForSVG加入好友 查看EricForSVG的个人资料 搜索EricForSVG在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看EricForSVG的博客2
    发贴心情 
    其中zhandian.xml,本来其中的拼音也应该是中文的:
    <?xml version="1.0" encoding="UTF-8"?>
    <ZhandianData>
     <Zhandian x="230" y="160">
      <Zhanming>jinghai</Zhanming>
      <Yiqi name="A">
       <Channel index="1">101</Channel>
       <Channel index="2">102</Channel>
       <Channel index="3">103</Channel>
       <Channel index="4"></Channel>
       <Channel index="5"></Channel>
       <Channel index="6"></Channel>   
      </Yiqi>
      <Yiqi name="B">
       <Channel index="1">qiujing_line</Channel>
       <Channel index="2">110</Channel>
       <Channel index="3"></Channel>
       <Channel index="4"></Channel>
       <Channel index="5"></Channel>
       <Channel index="6"></Channel>
      </Yiqi>
     </Zhandian>
    <ZhandianData>
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/28 19:22:00
     
     EricForSVG 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:6
      积分:121
      门派:XML.ORG.CN
      注册:2007/5/28

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给EricForSVG发送一个短消息 把EricForSVG加入好友 查看EricForSVG的个人资料 搜索EricForSVG在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看EricForSVG的博客3
    发贴心情 
    zhandian.xsl文档如下,我简化了,只保留了其中一处中文文本:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:a="http://www.w3.org/2000/svg">
     <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
     <xsl:template match="/">
      <svg id="RoomsSVG" xml:space="preserve" overflow="disvisible" viewBox="0 0 600 540" height="540" width="600" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
       <defs id="menu">
        <xsl:apply-templates mode="menu" select="ZhandianData/Zhandian"/>
       </defs>
       <g id="static">
        <path id="jinghai" opacity="0.5" fill="#F3F4E1" stroke="#724509" stroke-width="4" enable-background="new    " d="     M489.012,481.818c-0.063,0.28-0.131,0.565-0.197,0.854c-3.154,13.51-2.689,33.607-17.475,38.654     c-4.563,1.557-9.361,2.029-14.152,2.17c-3.902,0.115-6.51,3.686-10.092,4.57c-3.719,0.92-14.65,1.94-18.373,0.396     c-4.541-1.891-5.418-8.096-10.172-9.356c-6.295-1.673-14.625-0.324-18.52-6.906c-2.383-4.025-1.982-9.146-3.42-13.584     c-1.854-5.724-4.893-10.982-7.594-16.326c-3.254-6.439-7.234-13.563-7.209-20.953c0.027-6.85,1.633-14.221,5.869-19.775     c2.9-3.797,4.27-10.563,0.867-15.045c-1.67-2.203-4.441-2.705-7.053-2.748c-1.002-0.016-2.004,0.037-3.004,0.06     c-0.744,0.014-3.311,0.438-3.889,0.067c-0.842-0.53-0.354-2.981-0.994-3.989c-0.844-1.326-2.354-2.246-3.756-2.863     c-3.012-1.324-2.605-5.395-1.695-7.938c0.568-1.598,2.268-3.012,1.961-4.782c-0.381-2.228-2.189-3.521-4.377-3.236     c-3.928,0.504-7.51,4.002-10.279,6.563c-1.824,1.686-3.578,3.335-5.199,4.424c-6.621,4.438-15.453,2.098-22.92,2.992     c-23.738,2.854-47.759,3.717-71.238,8.487c-2.275,0.463-7.426,0.223-9.226,1.607c-1.867,1.438-0.706,4.385-2.142,5.584     c-1.415,1.18-5.555-0.095-6.804-1.021c-2.572-1.911-1.013-3.243-5.029-3.697c-8.245-0.938-15.48,3.554-23.149,5.661     c-2.908,0.801-14.359,3.464-16.987,1.157c-1.426-1.25-0.487-7.004-0.487-8.813c0-6.318,4.159-27.749-4.781-29.525     c-6.423-1.276-7.399-3.862-4.262-9.972c3.949-7.688,6.94-19.271-4.801-21.444c-7.666-1.418-15.342,1.078-23.003,1.332     c-12.865,0.429-25.622-2.711-38.462-0.616c-2.368,0.385-5.444-1.175-7.577,0.483c-0.603,0.469-4.57,6.692-3.048,6.659     c-7.07,0.15-19.223,1.052-25.049-3.7c-3.105-2.535-2.685-5.089-6.373-6.14c-3.692-1.057-6.503,0.771-7.688-3.633     c-1.657-6.152,0.611-13.881-0.396-20.18c-0.821-5.127-2.159-3.295-6.088-4.82c-17.368-6.746-8.605-33.354-6.446-46.416     c1.253-7.578,5.84-25.433,0.395-32.12c-3.018-3.705-10.148-2.131-12.489-6.305c-8.004-14.277,3.51-30.074-8.153-44.33     c-2.517-3.078-6.271-4.33-7.292-7.75c-0.876-2.933,0-7.547,0-10.633c0-6.114-0.574-11.806,0.056-17.907     c0.625-6.054,4.934-2.411,7.613-6.617c10.106-15.888,1.807-31.519,15.51-46.608C64.436,97.83,68.273,72.38,73.394,52.105     c1.293-5.121-0.248-14.459,5.043-17.529c3.932-2.283,9.317-0.083,13.507-1.762c5.661-2.267,9.544-8.17,14.949-10.322     c4.326-1.723,14.727,0.358,14.486,6.529c-0.264,6.776-13.97,6.436-12.401,12.298c7.596,0.39,11.525-0.812,17.484-5.478     c6.183-4.844,12.964-0.844,19.88-0.873c6.945-0.029,33.236-2.102,38.16-7.49c6.298-6.893,8.651-24.262,21.744-19.104     c2.85,1.122,9.194,4.439,8.785,8.349c-0.293,2.8-6.275,5.148-7.57,7.733c-4.807,9.599,12.587-0.493,14.688-0.884     c4.775-0.887,11.496-1.08,16.245-0.047c14.613,3.178,27.457,10.699,41.384,15.75c17.054,6.185,35.312,8.159,52.488,14.109     c13.225,4.58,26.082,10.199,38.59,16.447c8.477,4.23,15.75,10.267,23.527,15.579c22.463,15.343,51.754,20.244,71.541,39.454     c21.75,21.115,37.346,47.529,59.135,68.661c6.152,5.968,12.559,11.678,19.004,17.326c8.672,7.593,17.549,14.856,27.131,21.28     c6.49,4.353,16.113,10.636,15.221,19.674c-1.092,11.011-16.74,25.755-27.438,27.755c-5.811,1.086-11.82-0.104-17.686,0.065     c-4.523,0.131-14.027,0.701-12.238,7.426c0.32,1.201,4.559,1.431,4.92,4.685c0.369,3.27-3.368,5.602-2.982,8.906     c0.375,3.231,4.396,5.084,5.84,7.78c2.653,4.972,2.799,9.254-0.385,14.134c-5.771,8.848-16.496,7.637-23.256,14.471     c-8.796,8.896-15.951,11.298-27.954,15.021c-3.979,1.235-14.241,2.535-16.979,5.229c-4.975,4.896,1.486,9.871,5.888,13.307     c6.505,5.076,10.731,3.932,19.118,4.357c0.841,0.043,0.164,16.121-0.075,17.717c-0.8,5.281-3.653,8.771-5.282,13.688     c-1.576,4.754-1.09,8.047-3.809,12.346c-2.479,3.927-4.582,5.339-1.217,10.011C494.607,444.988,493.251,463.313,489.012,481.818z     "/>
        <rect id="biankuang" x="1.211" y="1.499" fill="none" stroke="#87540A" stroke-width="3" width="592.289" height="530.809"/>
       </g>
       <g id="shuiyu">
        <path fill="#DEE5BE" stroke="#DCF4A8" d="M451.871,123.553c-2.521-1.935-5.192-3.946-8.079-5.357     c-5.049-2.468-5.783,2.046-6.138,5.858c-0.571,6.131-2.597,11.979-3.405,18.056c-0.769,5.749-2.231,9.739-4.74,15.017     c-3.415,7.186-7.803,13.851-11.72,20.764c-4.889,8.629-11.212,16.207-17.636,23.725c-4.984,5.834-9.54,12.216-15.317,17.27     c-5.344,4.673,0.214,7.659,4.59,9.992c5.162,2.754,10.69,5.027,15.938,7.65c2.521,1.262,5.396,1.643,7.857,3.049     c2.039,1.164,3.701,3.639,6.33,2.513c2-0.856,3.372-3.356,4.664-4.98c2.314-2.909,5.325-4.742,7.821-7.448     c9.212-9.996,19.354-18.813,28.934-28.43c5.339-5.359,10.243-9.935,15.104-15.536c2.356-2.724,4.627-5.574,7.442-7.853     c2.347-1.892,5.771-3.157,7.271-5.891c1.978-3.602-3.523-8.17-5.375-10.895C476.255,147.578,464.87,133.542,451.871,123.553z"/>
       </g>
       <g id="chenshidian">
        <circle fill="none" stroke="#0F2AEF" stroke-width="4" cx="238.106" cy="148.541" r="4.5"/>
       </g>
       <g id="chenshiming">
        <text transform="matrix(1.0033 0 0 1 197.8877 137.209)" fill="#333333" font-family="'KaiTi_GB2312'" font-size="17.8336">静海县</text>
       </g>
       <g id="zhandian">
        <xsl:apply-templates mode="site" select="ZhandianData/Zhandian"/>
       </g>
      </svg>
     </xsl:template>
     <xsl:template match="Zhandian" mode="menu">
      <menu>
       <xsl:attribute name="id">
        <xsl:value-of select="Zhanming"/>
       </xsl:attribute>
       <header>
        <xsl:value-of select="Zhanming"/>
       </header>
       <xsl:for-each select="Yiqi">
        <xsl:for-each select="Channel">
         <xsl:if test=". != ''">
          <item>
           <xsl:value-of select="concat(../@name,.)"/>
          </item>
         </xsl:if>
        </xsl:for-each>
       </xsl:for-each>
      </menu>
     </xsl:template>
     <xsl:template match="Zhandian" mode="site">
      <g>
       <xsl:attribute name="id">
        <xsl:value-of select="Zhanming"/>
       </xsl:attribute>
       <xsl:for-each select=".">
         <xsl:attribute name="transform">
          <xsl:value-of select="concat('translate(',@x,',',@y,')')"/>
         </xsl:attribute>
         <path fill="#FFFFFF" stroke="#22B236" stroke-width="2" stroke-linejoin="bevel" d="M12.211,9.34c0,1.31-0.695,2.367-1.556,2.367     H2.555C1.697,11.707,1,10.646,1,9.34V3.367C1,2.058,1.696,1,2.555,1h8.101c0.858,0,1.556,1.062,1.556,2.367V9.34z"/>
         <path fill="#FFFFFF" stroke="#22B236" stroke-width="0.5" stroke-linejoin="bevel" d="M4.5,6.5 6.5,6.5  4.5,10 8.5,6 6.5,6 8.5,2.5z"/>
       </xsl:for-each>
      </g>
     </xsl:template>
    </xsl:stylesheet>
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/28 19:25:00
     
     EricForSVG 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:6
      积分:121
      门派:XML.ORG.CN
      注册:2007/5/28

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给EricForSVG发送一个短消息 把EricForSVG加入好友 查看EricForSVG的个人资料 搜索EricForSVG在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看EricForSVG的博客4
    发贴心情 
    xml文档是希望用来做动态菜单的,数据会从数据库提取
    所以整个思路是:DB->xml+xsl->SVG
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/28 19:28:00
     
     EricForSVG 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:6
      积分:121
      门派:XML.ORG.CN
      注册:2007/5/28

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给EricForSVG发送一个短消息 把EricForSVG加入好友 查看EricForSVG的个人资料 搜索EricForSVG在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看EricForSVG的博客5
    发贴心情 
    这个问题放了一个星期之后,利用周末的时间好好看了字符编码方面的东西和一些资料,然后做了一些实验,得到了一个解决方案,现在xml文档和xsl文档中的中文字符都可以被正确转换,注意:
    1.xsl文档一定要以UTF-8编码方式保存;
    2.xml文档可以用ANSI和UTF-8两种方式保存;
    <%@ Language="VBScript"%>
    <Meta Name="Author" Content="Eric">
    <%
    Response.Clear
    Response.Buffer = True

    dim xsldoc,xmldoc,xmlfile,xslfile,svgDoc

    xmlfile="zhandian.xml"
    xslfile="zhandian.xsl"
    svgfile="zhandian.svg"

    '生成xml转换所需要的对象
    set xslDoc = server.CreateObject("MSXML2.FreeThreadedDOMDocument")
    set xmlDoc =server.CreateObject("MSXML2.DOMDocument")
    set svgDoc =server.CreateObject("MSXML2.DOMDocument")

    '装入xsl文件
    xsldoc.async=False
    xsldoc.resolveExternals =False
    xsldoc.load server.MapPath(xslfile)

    '装入xml文件
    xmldoc.async=False
    xmldoc.resolveExternals =False
    xmldoc.load server.MapPath(xmlfile)

    '进行转换
    xmldoc.transformNodeToObject xsldoc,Response
    xmldoc.transformNodeToObject xsldoc,svgDoc

    '保存
    svgDoc.save server.MapPath(svgfile)

    '清除所有内存
    set xsldoc=nothing
    set xmldoc=nothing
    set svgDoc=nothing  
    %>
    程序参考了:《服务器端Xslt过程中出现的编码问题和解决方案 》www.tinydust.net/prog/diary/2004/03/xslt_01.html
    不过作者在文章里的说法和我的实验还是有一些出入。
    两个结论,不知道对不对,没有深入找资料核实,希望高人指点:
    1.注意编码方式,否则load将出错,比如:你不能让Msxml用UTF-8去加载一个以ANSI方式编码的文档
    2.因为Win32字符串采用UTF-16方式处理,所以即使load文档没有问题,transformNode也将无法正常转换中文字符

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/6/4 9:18:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/11/26 10:23:15

    本主题贴数5,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    125.000ms