Flex——加载中文路径文件

来源:互联网 发布:kmeans java实现 编辑:程序博客网 时间:2024/06/17 14:52
 

使用Flex/FlashLoaderURLLoader(或它们的派生类)使用URLRequest,通过http加载带中文路径的文件时,出现文件不存在错误。

 

例如:http://{host}/Common/Asset/新文件夹1/图片1.jpg

通过在服务器对http报文进行监控。

 

Case1:用Loader加载时,服务器收到的报文是:

GET /Common/Asset/%D0%C2%CE%C4%BC%FE%BC%D01/%CD%BC%C6%AC1.jpgHTTP/1.1

Case2:在浏览器直接请求,服务器收到的报文是:

GET /Common/Asset/%E6%96%B0%E6%96%87%E4%BB%B6%E5%A4%B91/%E5%9B%BE%E7%89%871.jpgHTTP/1.1

Case3:用encodeURI对“/Common/Asset/新文件夹1/图片1.jpg”加密,得到:

/Common/Asset/%E6%96%B0%E6%96%87%E4%BB%B6%E5%A4%B91/%E5%9B%BE%E7%89%871.jpg

 

对比case1,2,3可以发现:Case1GB2312编码的url escapeCase23UTF-8编码的url escape

这说明Flex/Flash的对于URLRequest(url)中的url有中文路径时,会采用GB2312编码进行url escape,这跟encodeURIUTF-8编码是不一致的。

 

我在服务器端处理该问题

我的http服务器对请求路径先判断是UTF-8还是GB2312编码,然后再进行相应解码。这样更能灵活应对上述产生的2种编码问题。