2 u010880786 u010880786 于 2016.03.08 22:09 提问

URL传参中文乱码,new string("iso-8859-1","utf-8")方法不行

小白接触后台不多,用myecplise开了一个服务器(tomcat),其中有url参数:http://xxx(ip)/downloadservlet?name=小儿鼻出血.mp4
,然后出现乱码,服务器无法定位到该文件。
查网发现大部分对name进行转码,用name= new string("iso-8859-1","utf-8");可是我在request中获取到name值后根据这个方法来转码,
然后部署后,在网址出输入http://xxx(ip)/downloadservlet?name=小儿鼻出血.mp4发现中文变成了c????又是一个新乱码。
于是我想试URLDecoder.decode()\URLDecoder.encode(),我把中文转码后输入的乱码输入到网址上,然后再在服务器解码发现还是不行,
求大神解答

3个回答

daidaineteasy
daidaineteasy   Ds   Rxr 2016.03.08 22:20
已采纳

你可以设置一下这几个地方来保证编码正确:

    1、jsp中编码设置为utf-8
    2、request、response设置编码为utf-8  (这个可以写在监听器中)
    3、tomcat的conf/server.xml文件中设置编码格式为utf-8

这样应该就不会再出现乱码问题了

daidaineteasy
daidaineteasy 回复香辣鸡丁煲: 嗯嗯,解决了就好,客气^-^
接近 2 年之前 回复
u010880786
u010880786 回复晓呆同学: 噢噢好了!谢谢!!!
接近 2 年之前 回复
daidaineteasy
daidaineteasy 回复香辣鸡丁煲: 设置完上边三个地方后,后台取值就不要用name = new String(name.getBytes("iso-8859-1"), "utf-8");name = java.net.URLDecoder.decode(name, "utf-8");这些了,直接String name = request.getParameter("name");这样就好了
接近 2 年之前 回复
u010880786
u010880786 回复ert45ey: 我是想让后台根据url来获取到视频的输出流然后返回给前台处理的,url我有做了拼接URL url = new URL(path+name+".mp4");可是视频名是中文的就T_T哎
接近 2 年之前 回复
u010880786
u010880786 回复ert45ey: 然后我在http上打http://10.101.46.958080/Baby/servlet/DownLoadServlet?name=小儿鼻出血,结果乱码显示为 http://10.101.46.958080/Baby/vedio/С��dz�.mp4
接近 2 年之前 回复
u010880786
u010880786 回复ert45ey: String name = request.getParameter("name");name = new String(name.getBytes("iso-8859-1"), "utf-8");name = java.net.URLDecoder.decode(name, "utf-8");System.out.print(name);
接近 2 年之前 回复
u010880786
u010880786 回复ert45ey: 我试了好像还是不行啊,下面这个是我的后台代码:String path = "http://10.101.46.958080/Baby/vedio/";
接近 2 年之前 回复
u011096114
u011096114 后台 String b= request..... 然后String aa=new String (b.getBytes("ISO8859-1‘’),“utf8”); 最后 String cc=java.net.URIDecord.decord("aa","utf8");即可、注意我最后一行URI那里拼写的不对、你可以按照提示、
接近 2 年之前 回复
dcxy0
dcxy0   Ds   Rxr 2016.03.09 09:51

如果是前台跳转后台,你可以js编码encodeURI()两次,然后在后台用URLDecoder.decode解码即可。

Royal_lr
Royal_lr   Ds   Rxr 2016.03.09 11:48

encode编码传值,,后台解码传入。。几乎是万能的

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!