在用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 Unsupported
EncodingException{
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编码