小迪网站建设,域名怎么实名认证,网站建设的投资必要性,网站做关键词搜索要好多钱又碰到JSP页面中文乱码问题#xff0c;经过一次encodeURI处理后仍旧是乱码#xff0c;后来经过两次encodeURI后正常显示中文
以前也碰到过同样的问题#xff0c;没深究#xff0c;这次网上搜集了一些资料#xff0c;记录下来留做备份 前端JS#xff1a;
var name“中文…又碰到JSP页面中文乱码问题经过一次encodeURI处理后仍旧是乱码后来经过两次encodeURI后正常显示中文
以前也碰到过同样的问题没深究这次网上搜集了一些资料记录下来留做备份 前端JS
var name“中文”;
var url “demo.jsp?name” name;
urlencodeURI(url);
urlencodeURI(url); //写一个不行。如果写一个就是号。
服务端获取
String namerequest.getParameter(“name”);
name java.net.URLDecoder.decode(name,“UTF-8”);
System.out.println(name); 因为Tomcat服务器会自动帮你做一次URLDecode所以再加上你自己在代码里面写的URLDecode一共就是两个Decode了既然要两次Decode当然就需要两次Encode了。或许你会问干脆只Encode一次然后在java代码里不Decode呵呵这个也是不行的这其实也就是为什么要进行Encode的原因吧 一般情况下, 发送 encodeURIComponent(parmeName)encodeURIComponent(parmeValue); 接收时, 直接 String paramValue request.getParameter(paramName); // 容器自动解码. 我们知道 encodeURIComponent 使用的是 UTF-8 编码规则来编的. 如果 request.getParameter(paramName) 时,容器也按 UTF-8 解的话,是正确的. 根本无须在客户端 进行二次的 encodeURIComponent(…) 如果 request.getParameter(paramName),容器没有按 UTF-8 解的话, 结果只有一个,就是乱码! 容器按什么编码来解码,决定于 request.setCharacterEncoding(***) 或者 服务器程序配置.
如果你在 jsp 程序中,能够 request.setCharacterEncoding(“UTF-8”), 并且 修改服务器配置,让容器在解 GET 提交的参数时,使用 UTF-8. 客户端提交前不用二次编码, 接收时,也只要直接 request.getParameter(paramName) 即可。 为什么网上会有人提出在客户端对字符串重复编码两次呢. 如果因为项目需要,不能指定容器使用何种编码规则来解码提交的参数, 比如:需要接收来自不同页面不地编码的参数内容时。 (又或者是开发人员被这有点复杂的东东搞得晕头转向不懂得如何正确的去做好这接收参数的工作) 这个时候在客户端对参数进行二次编码可以有效的避开。