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+"& ...
随机推荐
- nacos-server集群 安装、运行(ubuntu)
下载.解压 wget -P /opt/downloads https://github.com/alibaba/nacos/releases/download/1.0.0/nacos-server-1 ...
- Practice| 面向对象
实参与形参的传递机制 * 实参给形参赋值: * 1.基本数据类型: * 实参给形参的数据值,形参的修改和实参无关 * 2.引用数据类型 * 实参给形参的地址值,如果这个地址值修改“属性”会影响实参,但 ...
- STC15W408AS简单使用教程-简单的光强检测!
第一步:搭建开发环境 安装最新版本的STC_ISP程序烧录软件,链接:http://pan.baidu.com/s/1slLPnOD 密码:6bov 安装keil C51的51系列单片机集成IDE软件 ...
- Java 之 JavaScript (一)
1.JavaScript a.定义:JavaScript 是脚本语言,是一种轻量级的编程语言 b.实现:①直接通过标签里面的onXX属性驱动js的执行 <input type="but ...
- gradle根据不同渠道设置不同的开屏启动页
需求:根据不同渠道,app的开屏启动页不一样 思路:因为app的启动页是在清单文件配置的,而清单文件最后是要和main里面的清单文件合并的,所以每个渠道都要配一个清单文件,在里面设置 然后在Andro ...
- Petya and Array CodeForces - 1042D (树状数组)
D. Petya and Array time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- [ 严重 ] my网SQL注入
RANK 80 金币 100 数据包 POST maoyan.com/sendapp HTTP/1.1Host: xxx.maoyan.comUser-Agent: Mozilla/5.0 ( ...
- 利用nginx,腾讯云免费证书制作https
之前一直在研究,https怎么弄.最近看到了腾讯云提供的免费得ssl证书,寻思把网站弄成https. 首先先去腾讯云购买一个免费得证书. 点击后填写内容, 然后下载证书 解压证书就可以看到,提供四种方 ...
- AE 模板 素材 视频 科技 公安
3d立体现代城市模型背景视频素材视频素材下载__熊猫办公 1080p 科技高速公路汽车奔驰背景视频视频素材下载__熊猫办公 高科技hud全息元素素材ae视频素材下载__熊猫办公 渲染输出,Adobe ...
- BZOJ.3532.[SDOI2014]LIS(最小割ISAP 退流)
BZOJ 洛谷 \(LIS\)..经典模型? 令\(f_i\)表示以\(i\)结尾的\(LIS\)长度. 如果\(f_i=1\),连边\((S,i,INF)\):如果\(f_i=\max\limits ...