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+"& ...
随机推荐
- 数位dp 模板
不能有49 #include<bits/stdc++.h> using namespace std; //input by bxd #define rep(i,a,b) for(int i ...
- 070 DStream中的transform和foreachRDD函数
1.说明 DStream的API不够满足使用的时候,可以使用这两个函数,将dstream转换为rdd,然后进行操作 2.transform transform:将DStream的操作转换为RDD的操作 ...
- Maya mayapy.exe 安装 Cython,编译 pyd
Maya mayapy.exe 安装 Cython,编译 pyd 前言 在 Python 2.7 cython cythonize py 编译成 pyd 谈谈那些坑 中最后提到,使用 VCForPy ...
- QT pyqt pyside2 QLabel 自动换行设置注意点
QT pyqt pyside2 QLabel 自动换行设置注意点 先看效果: PySide2(QT5) 的 QT Designer (我在 QT4 的 designer 中不可以直接看效果,可能需要设 ...
- PyQt PySide QListWidget 添加自定义 widget
PyQt PySide QListWidget 添加自定义 widget 原文链接:https://stackoverflow.com/questions/25187444/pyqt-qlistwid ...
- list set接口之间的区别
list接口它的实现类,比如arraylist里面的值有序,并且可以重复.(有序指的是插入进去的顺序) set无序,且不可重复.(这里的无序就是指不是插入进去的顺序,但其实也不是真的无序,它会按照自己 ...
- Xamarin SQLite教程Xamarin.iOS项目添加引用
Xamarin SQLite教程Xamarin.iOS项目添加引用 使用直接方式访问SQLite数据库,需要将System.Data和Mono.Data.SQlite库导入到创建的项目中.下面将分别讲 ...
- Java(Android)线程池zz
介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端执行一个异步任务你还只是如下new T ...
- Django之模板1
Django模板 一.变量(只需要记住两种特殊符号) {{ }} 和{% %} {{ }}表示变量,在模板渲染的时候替换成值,变量名由字母数字和下划线组成. {% %}表示逻辑相关的操作. 点(.)在 ...
- Lua的 table.sort排序
在用table.sort 排序的时候注意,如果使用多个条件排序,应在一个排序函数里按照条件优先级进行比较排序. 例如 local t = { {time = , i = }, {time = , i ...