servlet的xx方式传值中文乱码
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//POST提交解决乱码的方式 与GET方式不同的是请求new String(nameParam.getBytes("iso8859-1"), "UTF-8"); 响应是相同的
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
String nameParam = req.getParameter("name");//很奇怪 form表单获取的数据 乱码
//一般情况下,服务器默认的编码是“iso8859-1”,所以我们需要数据还原,然后再转换成UTF-8的形式
//不允许我去转呀 报错---解决:修改tomcat的server.xml文件 添加 URIEncoding="UTF-8" useBodyEncodingForURI="true" 哈哈 完美解决 好累
//nameParam = new String(nameParam.getBytes("iso8859-1"), "UTF-8");
System.out.println("找到了:"+ nameParam);//第一次进来null 输入店员姓名 点击查询 输出???é??
具体三种方式解决:------------第三种完美解决 也正是大家不太熟悉的方法 不知看到此文后你的问题有没有解决哪?
方法一: get方式提交的参数编码,只支持iso8859-1编码。因此,如果里面有中文。在后台就需要转换编码,如下
String bname = request.getParameter("bname");
bname = new String(bname .getBytes("iso8859-1"),"utf-8");
前提是你页面编码就是utf-,如果是gbk,那上面那句代码后面就改成gbk。
But修改后我的问题仍没解决,继续。。。 方法二:在客户端使用 URLEncoder.encode(“中文”,”UTF-”)对中文参数进行编码,在服务器端需要进行解码this.setName(java.net.URLDecoder.decode(name, “UTF-”));
比较麻烦! 方法三:修改tomcat的server.xml文件: <Connector connectionTimeout="" port="" protocol="HTTP/1.1" redirectPort="" /> 在其中添加URIEncoding="UTF-8" useBodyEncodingForURI="true"这一句。我使用的tomcat8,之前没有添加useBodyEncodingForURI="true",所以还是乱码,添加后问题解决!
当然 每次Servlet中总会有各种各样的中文请求,为了避免在每个Servlet种都添加request.setCharacterEncoding(“utf-8”)或者response.setCharacterEncoding(“utf-8”),为此可以考虑添加一个中文过滤器 具体代码如下:
1.web.xml
<filter>
<filter-name>CharsetEncodingFilter</filter-name>
<filter-class>com.pers.hoobey.filter.CharsetEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<!-- 指定字符编码为UTF- -->
<param-value>UTF-</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharsetEncodingFilter</filter-name>
<!-- 过滤所有的jsp页面的请求 -->
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
2.CharsetEncodingFilter
//采用filter统一处理字符集
public class CharsetEncodingFilter implements Filter {
private String encodeString; @Override
public void init(FilterConfig filterConfig) throws ServletException {
// 从init-param中获取param-name为encoding参数的值
encodeString = filterConfig.getInitParameter("encoding");
} @Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("begin");
// 设置字符集
request.setCharacterEncoding(encodeString);
// 继续向下执行,如果还有其他filter继续调用其他filter,没有的话将消息发送给服务器或客户端
chain.doFilter(request, response);
System.out.println("end");
} @Override
public void destroy() {
}
}
servlet的xx方式传值中文乱码的更多相关文章
- 解决servlet中get方式中中文乱码问题(二):装饰者模式使用
注意,这里是针对Tomcat容器中get方式提交的servlet中获得参数,参数中有中文的时候乱码的问题: 之前我已经讲过,Tomcat8.0及以上URIEncoding都是utf-8的默认编码,不会 ...
- get方式传值中文乱码
问题描述: 本机可以,服务器乱码: 解决方案: 我采用了第三条,改server.xml配置 方法一: get方式提交的参数编码,只支持iso8859-1编码.因此,如果里面有中文.在后台就需要转换编码 ...
- 解决servlet中get方式中中文乱码问题前驱(一):装饰者模式再理解
package day02; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; ...
- ajax()函数传值中文乱码解决方法介绍
jquery的ajax()函数传值中文乱码解决方法介绍,需要的朋友可以参考下 复制代码 代码如下: $.ajax({ dataType : ‘json',type : ‘POST',url : ‘ht ...
- Servlet相关的几种中文乱码问题
Servlet相关的几种中文乱码问题浏览器调用jsp,html等页面中文显示乱码使得文件本身以utf-8字符集编辑保存 让浏览器浏览器以utf-8字符集解析 在浏览器中右键选择编码格式为utf-8: ...
- 在Servlet中出现一个输出中文乱码的问题(已经解)。
在Servlet中出现一个输出中文乱码的问题,已经解. @Override public void doPost(HttpServletRequest reqeust, HttpServletResp ...
- jquery的ajax()函数传值中文乱码解决方法介绍
jquery的ajax()函数传值中文乱码解决方法介绍,需要的朋友可以参考下 代码如下: $.ajax({ dataType : ‘json', type : ‘POST', url : ‘http: ...
- JS传值中文乱码解决方案
JS传值中文乱码解决方案 一.相关知识 1,Java相关类: (1)java.net.URLDecoder类 HTML格式解码的实用工具类,有一个静态方法:public static String ...
- js url传值中文乱码完美解决(JAVA)
js url传值中文乱码完美解决(JAVA) 首先在你的jsp页面这样更改: var url="你要传入的Action的位置&ipid="+ipid+"& ...
随机推荐
- 005 Numpy的基本操作
一:数组与标量,数组与数组之间的运算 1.数组与标量之间的计算 2.数组之间的加减乘除 3.元素级运算 二:.矩阵积 1.说明 这个的意思是第一个数组的列,必须和第二个数组的行的大小相同 2.运算 3 ...
- appium-电脑连不上手机设备如何解决
在自动化过程中,会遇到电脑无法连接到手机情况,首先在cmd命令输入adb devices查看是否报错,报错绝大可能是5037端口被占用了,因为adb默认绑定的是5037端口 1.查看占用端口的进程PI ...
- kafka告警简单方案
一.前言 为什么要设计kafka告警方案?现成的监控项目百度一下一大堆,KafkaOffsetMonitor.KafkaManager. Burrow等,具体参考:kafka的消息挤压监控.由于本小组 ...
- f5到底刷新了点什么,你知道吗
引言 前面翻到了http缓存相关内容,关于强制缓存和协商缓存,他们之间的差别可能大家比较清楚. 并且常规情况下是否该使用缓存以及使用哪种缓存, 相关文章多且全,这里不再赘述. 不过用户的不同行为会打破 ...
- antd + node.js + mongoose小总结
最近开发太忙,都没时间更新博客,想通过这篇博客总结一下相关经验,以备后续能用到: 一.antd 1.onChange of undefined问题:可能是页面中表单取了相同的名称,也可能是在遍历时表单 ...
- 自己总结的C#编码规范--3.特定场景下的命名最佳实践
特定场景下的命名最佳实践 命名空间 要使用PascalCasing,并用点号来分隔名字空间中的各个部分. 如Microsof.Office.PowerPoint 要用公司名作为命名空间的前缀,这样就可 ...
- BZOJ.1535.[POI2005]SZA-Template(KMP DP)
BZOJ 洛谷 \(Description\) 给定一个字符串\(s\),求一个最短的字符串\(t\)满足,将\(t\)拼接多次后,可以得到\(s\).拼接是指,可以将\(t\)放在当前串的任意位置, ...
- Python一行代码处理地理围栏
最近在工作中遇到了这个一个需求,用户设定地理围栏,后台获取到实时位置信息后通过与围栏比较,判断是否越界等. 这个过程需要用到数据协议为GEOjson,通过查阅资料后,发现python的shapely库 ...
- BZOJ3737 : [Pa2013]Euler
首先枚举$n$的每个约数$d$,检查一下$d+1$是否是质数,这些数都有可能作为答案的质因子出现. 考虑爆搜,每次枚举下一个要在答案中出现的质因子$p$,将$n$除以$p-1$,再枚举$p$的指数,然 ...
- BZOJ4223 : Tourists
将位置划分成$O(m)$段区间,每段最早被阻挡的时间可以用堆维护. 那么每段区间对询问的贡献独立,扫描线处理即可. 时间复杂度$O(m\log m)$. #include<cstdio> ...