利用xhr传送中文

项目中使用xhr的send函数来发送二进制数据,达到了用ajax上传文件的目的。但是跟着二进制流传递的参数(比如文件名),就只能直接放在url里面了。
如下

var xhr = new XMLHttpRequest();
var filename="图片";
var url="XXX?filename="+filename;

xhr.setRequestHeader("Content-type","charset=utf-8");
//u8data 为二进制数据流
xhr.send(u8data);


但是此时参数里面的中文为%XX形式。解决方案为:
前端使用两次encodeURI:
var url="XXX?filename="+encodeURI(encodeURI(filename));

后台使用java.net.URLDecoder.decode,本例为
str=java.net.URLDecoder.decode(str,"utf-8");//str="图片"

你可能感兴趣的:(js)