日期:2014-05-18  浏览次数:20634 次

在用jsp实现在线听歌时,文件名和文件路径中不能出现中文的问题,应该如何解决?
本人刚开始学jsp,试着做一个音乐网站,现在基本上快完成了,就是如题所说的问题不知道怎么解决,希望高手指点一下

主要代码如下:

<object   classid=CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95   codebase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701   width= "75% "   height= "70 "   align= "middle "   id= "mediaplayer ">
<param   name= "FileName "   value= "************************************ ">
<param   name= "AutoStart "   value= "true ">
<param   name= "AutoRewind "   value= "-1 ">
<param   name= "AnimationAtStart "   value= "true ">
<param   name= "ShowControls "   value= "true ">
<param   name= "ClickToPlay "   value= "false ">
<param   name= "EnableContextMenu "   value= "false ">
<param   name= "EnablePositionControls "   value= "true ">
<param   name= "Balance "   value= "0 ">
<param   name= "ShowStatusBar "   value= "true ">
<param   name= "AutoSize "   value= "1 ">
</object>

把***部分换成文件的绝对路径即可,但问题是路径中不能出现中文,比如
http://localhost:8080/web/11.mp3   就可以正常在线听歌
但如果是   http://localhost:8080/web/我很烦.mp3     就不行  
在文件前面加上 <%@   page   contentType= "text/html;   charset=GB2312 "   %> 依然不行


------解决方案--------------------
用这个函数把你的文件名处理一下,第一个参数用你的文件名,第二个就用GB2312
试试看。

public static String toUnicode(String strText,String code) throws UnsupportedEncodingException{
char c;
String strRet = " " ;
int intAsc;
String strHex;
strText = new String(strText.getBytes(code),code);
for ( int i = 0; i < strText.length(); i++ ){
c = strText.charAt(i);
intAsc = (int)c;
if(intAsc> 128){
strHex = Integer.toHexString(intAsc);
strRet = strRet + "&#x " + strHex+ "; ";
} else {
strRet = strRet + c;
}
}
return strRet ;
}
------解决方案--------------------
URL编码