听老歌 发表于 2011-12-14 20:40

svg插入中文名称的图片解决方案

svg插入中文名称的图片解决方案









svg插入中文名称的图片解决方案
种种原因吧 ,程序中用了中文名称的图片,嵌入svg中,因为确实不能把这些图片搞成英文名称了,只好找个解决方案绕过去。
网上说可以改tomcat的server.xml配置 加入URIEncoding="UTF-8" ,如下
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>
这样写 直接访问http://localhost:8080/svgtest/bmp/按钮.png 倒是可以显示了,但svg中的图片还是不能显示。

解决方法:对中文名称进行encodeURI转码才行;



Xml代码1.<?xml version="1.0" encoding="utf-8" standalone="no" ?>
2.<svg id="svgRoot" onload="init()" xmlns="http://www.w3.org/2000/svg" xmlns:cge="http://iec.ch/TC57/2005/SVG-schema#" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%">
3.    <title>标题</title>
4.    <desc>SVG</desc>
5.    <script><![CDATA[
6.      function init(){
7.            var svgDoc = evt.target.ownerDocument;
8.            var root = svgDoc.documentElement;
9.            var imgs = root.getElementsByTagName("image");
10.            for(var i=0;i<imgs.length;i++){
11.                var xlinkns = "http://www.w3.org/1999/xlink";
12.                var oldImg = imgs.item(i).getAttribute("xlink:href");//不要写成imgs
13.                imgs.item(i).setAttributeNS(xlinkns,"xlink:href",encodeURI(oldImg));            
14.            }
15.            /*
16.            var img1 = root.getElementById("img1");
17.            var xlinkns = "http://www.w3.org/1999/xlink";
18.            var oldImg = img1.getAttribute("xlink:href");
19.            img1.setAttributeNS(xlinkns,"xlink:href",encodeURI(oldImg));
20.            */
21.
22.            //alert(imgs.item(0).getAttribute("xlink:href"));
23.      }
24.   ]]></script>
25.    <image x="100" y="100" width="100" height="100" xlink:href="../bmp/anniu.png"/>
26.    <image id="img1" x="100" y="200" width="100" height="100" xlink:href="../bmp/按钮.png"/>
27.    <!--
28.    <image x="100" y="300" width="100" height="100" xlink:href="../bmp/%E6%8C%89%E9%92%AE.png"/>
29.    -->
30.</svg>

阳光的扣子 发表于 2011-12-20 14:43

希望于楼主多多交流哦
页: [1]
查看完整版本: svg插入中文名称的图片解决方案