(本文年代久远,请谨慎阅读)传值乱码问题在Web开发中涉及许多方面:登陆注册时,是否正确得到正确的中文用户名;修改信息时,是否可以显示提交的中文信息;
以上是具体使用,当然包括所有后台想得到值的 文本框 的传值!!
可以看到输入中文是我们在做一个网站时必须要考虑的,纯英文的外国网站你输入中文也不会乱码。
其实,解决乱码我们只需要注意几个问题,再加之少许操作即可获得想要的中文
写在前面
一个Web工程项目中代码涉及编码的地方有几处:
你的struts.xml配置文件中开头会有一句:文本框所在的jsp页面的开头也会有一句:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
好像这就是所涉及到编码的所有部分了,如果我们只是改变一下”GBK”,”UTF-8”等等字眼,估计随便怎么换也是乱码我们需要进一步的进行“再编码”!!
下面的解决方式面对两种问题,至今我只遇到了这两种,即两种后台得到值的方式“
标准的form表单提交,后台用get和set得到文本框的值;
大量重复操作的跳转(比如页面中一个表格里每一行后面有一个删除按钮),直接href=action后挂相应的值进行传递
标准form表单提交
1.把显示的jsp页面的第一句话写为:pageEncoding=”UTF-8”,GBK是不行的,对于struts可以忽视
2.在后台Java代码中的业务处理部分,
如果你的get和set没有在.java中,你总要通过getParameter(“xxx”);来获取值即:
如果get与set在其中,则可以直接用,不用getParameter
要做的操作:String xxx = request.getParameter(“xxx”);之后加一句 xxx = URLDecoder.decode(username , “utf-8”); //关键代码,所需包会自动添加
get与set同你的处理代码在一起的,就在excute()里第一次出现xxx的前面添加:xxx = URLDecoder.decode(username , “utf-8”);
<< 更多精彩尽在『程序萌部落』>>
<< https://www.cxmoe.com >>
用href=action传值
首先,要改写,不要用href,改为点击触发一个js的function(),比如:
1 | <input name="in" value="<%p++(构造了一个id值)%>"....href="xx.action?id=p "> |
1 | function look( str ){ |
这相当于在页面传值的时候进行了编码,在后java中得到的是编码两次的变量,所以要进行一次解码,添加:
1 | xxx = URLDecoder.decode(xxx, "utf-8"); //关键代码,添加位置同First所述 |
具体实例
在“input.jsp”页面中,需要通过js将值传递到后台,后台根据传递的值进行数据查询时,
通过test.jsp的js进行编码(粉色为编码),后台java解码(绿色为解码部分),可以解决
1 | <script type="text/javascript" charset="UTF-8"> |
1 | <tr> |
1 | import java.net.URLDecoder; |
😒 留下您对该文章的评价 😄