utf-8编码的jsp页面中请求中文名的swf文件

kofwr 2010-12-13 04:57:29
提一个怪异的问题:
tomcat做webserver,某个jsp中有显示的swf文件,其中swf文件为中文命名(目前不能改变中文命名方式),在firefox等非ie浏览器下看,中文swf文件正常,但在ie下看,无法请求到中文的swf文件,但是直接url敲入又可访问到。
代码如下
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%
String swfFile1 = "/UserFiles/2/Flash/测试.swf";

%>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
id="summerPalace_normalInput" width="400" height="300"
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
<param name="movie" value="<%=swfFile1%>" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="allowScriptAccess" value="sameDomain" />
<embed src="<%=swfFile1%>" quality="high" bgcolor="#ffffff"
width="400" height="300" name="summerPalace_normalInput" align="middle"
play="true"
loop="false"
quality="high"
allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.adobe.com/go/getflashplayer">
</embed>
</object>

<br>

如上述代码,直接url敲入http://UserFiles/2/Flash/测试.swf就可以请求中文的swf,但页面就不行,本页是utf-8编码的页面。
后来用new String(swfFile.getBytes("UTF-8"), "GBK").trim();这种方式在IE使用的object标签内生成路径,这个 测试.swf是可以的,但用 技术.swf却不能被转码,貌似是字符集不符合。
请高手说说原因吧。
...全文
278 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
戒指 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 getserved 的回复:]

与代码无关,IE下传输数据无论是否设置UTF-8,最后统一编码LATIN1,所以要在后台转换new String(fileName.getByte("UTF-8"),"ISO-8859-1"),確保所有頁面代碼服務器設置均為UTF-8后考慮
[/Quote]

还是用英文命名好一些,汉字有些不兼容
abc130314 2010-12-14
  • 打赏
  • 举报
回复
String swfFile1 = "/UserFiles/2/Flash/" + java.net.URLEncoder.encode("测试.swf", "utf8");

server.xml 配置一下
<Connector URIEncoding="utf-8" port="8084" protocol="HTTP/1.1"
getserved 2010-12-14
  • 打赏
  • 举报
回复
与代码无关,IE下传输数据无论是否设置UTF-8,最后统一编码LATIN1,所以要在后台转换new String(fileName.getByte("UTF-8"),"ISO-8859-1"),確保所有頁面代碼服務器設置均為UTF-8后考慮
chen7788 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 eswn 的回复:]
你把IE下的运行后的源代码贴出来,就很好解决了。
[/Quote]

这个是一个不错的解决问题的办法
getserved 2010-12-14
  • 打赏
  • 举报
回复
不是SRC不支持中文,是IE瀏覽器的編碼問題,不然你怎麼解釋FF下正常,如果SRC不支持中文,大不了做3次轉碼
eswn 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 getserved 的回复:]

与代码无关,IE下传输数据无论是否设置UTF-8,最后统一编码LATIN1,所以要在后台转换new String(fileName.getByte("UTF-8"),"ISO-8859-1"),確保所有頁面代碼服務器設置均為UTF-8后考慮
[/Quote]
现在的问题不是转码的问题,是flash控件的src参数不支持中文字符,只支持国际标准的特殊字符,如果控件本身不支持,要么用英文路径,要么自已开发flash显示控件。
商科程序员 2010-12-14
  • 打赏
  • 举报
回复
同意8楼和9楼
觉得就是你编码的问题.
这种问题最好是抓包,看看里面到底是如何传的数据.从IE中输入和点页面链接请求的地址有何不同.
zhangchuanlove 2010-12-13
  • 打赏
  • 举报
回复
资源文件的命名尽量使用英文,保持好习惯。谁让主流的软件都是老外开发出来的呢,如果哪天国人能做出统治级的软件,如操作系统,俺们就不用考虑中文命名的问题了,呵呵。

祝你好运
eswn 2010-12-13
  • 打赏
  • 举报
回复

firefox等非ie浏览器下看,中文swf文件正常,但在ie下看,无法请求到中文的swf文件
这个不只JSP,你写个html,它也一样不能播放。
所有资源文件的命名,都要使用英文,就像有些软件不能安装在中文文件夹下。
Jlins 2010-12-13
  • 打赏
  • 举报
回复
ie会把中文路径”处理一下“
一个纠结的让人蛋疼的设置

所以要坚持使用英文名
eswn 2010-12-13
  • 打赏
  • 举报
回复
你把IE下的运行后的源代码贴出来,就很好解决了。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧