JS.中文乱码,JspServlet端的解决办法
2010-03-08 15:18:21| 分类: Extjs | 标签:encodeuricomponent 乱码 urldecoder |举报|字号 订阅
上一篇文章提到Js的传递中文参数,在Webwork框架下解析出来的是乱码。
这一篇文章将要提到在Jsp、Servlet端对Js传递中文的解决办法。
index.jsp
第一个页面给第二个页面通过URL传递中文参数,两次调用encodeURIComponent()函数来编码:
<a href="http://localhost:8080/web/jsp/Testing.jsp?name="+encodeURIComponent(encodeURIComponent(“测试乱码”))">姓名</a> |
Testing.jsp
第二个负责接收数据的页面。 解码上面的中文参数:
<% <script type="text/javascript"> |
上面的代码就是调用java.net.URLDecoder类来进行解码。由于request.getParameter()方法在调用的时候,java就已经自动将数据解码了一次,所以如果在index.jsp页面中只编码一次的话,在这里就会得到乱码。因此,要使用encodeURIComponent()编码两次,然后URLDecoder+getParameter()再进行两次解码。
另外。请注意Testing.jsp页面的红色代码。注意标点符号!由于js中的字符串需要使用单引号来表示,所以如果我们定义java变量的时候,不手动给这个字符串name加上单引号的话,那么在js端就会把它等成其他类型。就会提示“xxx无定义”。因此,请注意。在变量两头都加上单引号:name = " ' " +name + " ' "。这样看应该清晰了吧。