【转自】http://ajava.org/article-748-1.html
这里的中文SWF不能读取问题是指:当SWF文件名为中文时,FlexpaperViewer不能读取到指定的SWF文件,会显示一直处于加载中。这个问题是mark最需要解决的,因为ajava.org网站的PDF基本都是中文名,如果都要改成英文名,那处理起来会很麻烦。
我们先作下面的测试:
测试一、在windows xp系统下,test.html、flexpaper_flash.js无任何改动,将上面的ajavaflexpaper.swf改名为FlexpaperViewer.swf(或使用原有的),test.html中SwfFile : escape('中文ajava.swf')
结果:FlexpaperViewer无法加载中文SWF。
测试二、在windows xp系统下,test.html、flexpaper_flash.js的文件编码都是utf-8(文本编辑器中另存时选择编码为utf-8),将上面的ajavaflexpaper.swf改名为FlexpaperViewer.swf(或使用原有的),test.html中SwfFile : escape('中文ajava.swf')
结果:FlexpaperViewer无法加载中文SWF。
测试三、在windows xp系统下,test.html、flexpaper_flash.js的文件编码都是utf-8(文本编辑器中另存时选择编码为utf-8),将上面的ajavaflexpaper.swf改名为FlexpaperViewer.swf(或使用原有的),test.html中SwfFile : decodeURI('中文ajava.swf'), flexpaper_flash.js中第24行增加decodeURI,SwfFile : decodeURI(config.SwfFile),
结果:FlexpaperViewer可以加载中文SWF。
测试四、在windows 2003系统下,按顺序测试上面的1-3
结果:三种情况FlexpaperViewer都不可以加载中文SWF。
测试五、在linux系统下,按顺序测试上面的1-3
结果:三种情况FlexpaperViewer都不可以加载中文SWF。
从上面的测试结果来看,中文SWF在windows 2003系统、linux系统中使用中文SWF无论是使用原有的还是ajavaflexpaper.swf改名的FlexpaperViewer.swf,都不能解决加载中文SWF问题。
我们采用以下的方法来寻求解决之道:查找FlexpaperViewer.mxml、FlexpaperViewer_base.mxml文件,找出SwfFile相关的内容,通过Alert.show()方法显示出来,检查是哪里的问题。
主要检查要注意的代码有:
Ajavaflexpaper.mxml - initApp()
FlexpaperViewer_base.mxml - loadSwf(s:String)
FlexpaperViewer_base.mxml - toggleFullScreen()
FlexpaperViewer_base.mxml - getUrlParamaters()
Viewer.as - set SwfFile(s:String)
通过检查上述方法,会发现无法加载中文SWF问题的原因是:
Web页面中SwfFile : escape('中文ajava.swf ')参数与Viewer.as - set SwfFile(s:String)方法中的参数处理导致问题。
Mark作了以下修改:
1. test.html、flexpaper_flash.js的文件编码都是utf-8
2. test.html中SwfFile : escape('中文ajava.swf ')改为SwfFile : decodeURI('中文ajava.swf ')
3. Viewer.as - set SwfFile(s:String)方法中,修改如下代码:
-------------------------------------------------------------------
if(EncodeURI)
s = unescape(s);
改为
if(EncodeURI)
s = decodeURI(s);
--------------------------------------------------------------------
if(!pagesSplit){
_swfFile = s;
if(EncodeURI)
_swfFile = encodeURI(s);
else
_swfFile = s;
}
else
_swfFile = s;
改为
_swfFile = s;
修改完成后,重新编译,在3种测试环境中测试,会发现中文SWF可以加载了,呵呵。
假如你的中文SWF文件是放在中文文件夹中,那可以读取到吗?答案是YES,没问题,你可以自己试试^_^
关于SWF中文名中特殊字符的使用
1)系统禁止使用: / \ * ? < > |
2)英文符号 % & ' + 不可用,
3)中文符号 % & ' + 不可用,可用 、 ? 《 》
4)要注意英文大小写的不同
转载请注明:转自http://ajava.org/,请保留文章的完整。