提交数据中文乱码

J2EE 码拜 9年前 (2015-04-19) 1188次浏览 0个评论

 jsp 页面数据提交到 Servlet 中,提交上去的中文数据出现乱码,jsp 中用 post 方式提交,在 Servlet 中加入了 request.setCharacterEncoding(“UTF-8”) 也没用

提交数据中文乱码

提交数据中文乱码

提交数据中文乱码
转码一下,

String name = new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8");

 网上也有很多种,同样处理乱码形式的种类也很多,建议LZ先到网上找答案

提交数据中文乱码
你jsp的编码设的什么?
提交数据中文乱码
多试几次编码转换。
提交数据中文乱码
是你的环境不统一
提交数据中文乱码
引用 2 楼 shixitong 的回复:

你jsp的编码设的什么?

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
提交数据中文乱码
引用 1 楼 jiafeng_lee 的回复:

转码一下,

String name = new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8");

 网上也有很多种,同样处理乱码形式的种类也很多,建议LZ先到网上找答案

这样写不是 get 方式提交的转码方式吗,对 post 不适用吧, 我的是 post 方式提交的
网上查了,但是找到的答案不行

提交数据中文乱码
引用 4 楼 luoyefeiwu1 的回复:

是你的环境不统一

哪地方不统一? 怎么改?

提交数据中文乱码
public class CharactorFilter implements Filter {
    //获取字符编码
    String encoding=null;

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        if(encoding!=null){
           request.setCharacterEncoding(encoding);
            response.setContentType("text/html;charset="+encoding);
        }
        chain.doFilter(request, response);

    }

    public void init(FilterConfig filterConfig) throws ServletException {
 
        encoding=filterConfig.getInitParameter("encoding");

    }

    public void destroy() {
        encoding=null;
    }

}



web.xml中过滤器的配置

<filter>    
    <filter-name>CharactorFilter</filter-name>  
   <filter-class>cn.com.Filter.CharactorFilter</filter-class>
     <init-param> 
         <param-name>encoding</param-name> 
         <param-value>utf-8</param-value>
     </init-param>
  </filter>
  <filter-mapping>
      <filter-name>CharactorFilter</filter-name>
      <url-pattern>/*</url-pattern>  
      </filter-mapping>


还有就是你用的容器编码设置为,最好都统一一下,如果是Tomcat,你看看Tomcat下的编码是不是一致的?

提交数据中文乱码
引用 9 楼 yiran_ming 的回复:
public class CharactorFilter implements Filter {
    //获取字符编码
    String encoding=null;

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        if(encoding!=null){
           request.setCharacterEncoding(encoding);
            response.setContentType("text/html;charset="+encoding);
        }
        chain.doFilter(request, response);

    }

    public void init(FilterConfig filterConfig) throws ServletException {
 
        encoding=filterConfig.getInitParameter("encoding");

    }

    public void destroy() {
        encoding=null;
    }

}



web.xml中过滤器的配置

<filter>    
    <filter-name>CharactorFilter</filter-name>  
   <filter-class>cn.com.Filter.CharactorFilter</filter-class>
     <init-param> 
         <param-name>encoding</param-name> 
         <param-value>utf-8</param-value>
     </init-param>
  </filter>
  <filter-mapping>
      <filter-name>CharactorFilter</filter-name>
      <url-pattern>/*</url-pattern>  
      </filter-mapping>


还有就是你用的容器编码设置为,最好都统一一下,如果是Tomcat,你看看Tomcat下的编码是不是一致的?

这样加过滤也不行,还是乱码。Tomcat 中是默认配置,不想通过改 Tomcat 配置来解决

提交数据中文乱码
引用 8 楼 fangwei198712 的回复:

提交数据中文乱码

我的就是这个样的

提交数据中文乱码
帮帮忙,不要沉
提交数据中文乱码
转码也不行吗?这个应该是环境不同意才会出现的状况。
提交数据中文乱码
jsp的文件编码为GBK,该成UTF-8即可。
提交数据中文乱码
引用 14 楼 wqc5461 的回复:

jsp的文件编码为GBK,该成UTF-8即可。

引用 13 楼 wushixt 的回复:

转码也不行吗?这个应该是环境不同意才会出现的状况。

该怎么改?
其实我从数据库中读出来显示在 jsp 页面的内容中文是没有乱码的

提交数据中文乱码
20分
前端
提交数据中文乱码
ajax     post方式提交
提交数据中文乱码
后台取值
提交数据中文乱码
debug
提交数据中文乱码
提交数据中文乱码
引用 15 楼 lingfeng892 的回复:
Quote: 引用 14 楼 wqc5461 的回复:

jsp的文件编码为GBK,该成UTF-8即可。

引用 13 楼 wushixt 的回复:

转码也不行吗?这个应该是环境不同意才会出现的状况。

该怎么改?
其实我从数据库中读出来显示在 jsp 页面的内容中文是没有乱码的

出乱码,应该是你控制台里出的乱码吧。吧项目的编码设成UTF-8就可以了。。

提交数据中文乱码
20分
看看你页面最上面创建的是什么编码格式如果不是UTF-8可以加上提交数据中文乱码
或者后台接收参数时进行编码格式转换
String value = new String (request.getParameter(“name”).getBytes(“ISO-8859-1″),”UTF-8”);
如果以上都解决不了的话   可能是数据库编码设置问题
MYSQL一般会出现这样的问题 可以用以下方法查看编码格式
提交数据中文乱码
其中,character_set_client为客户端编码方式;character_set_connection为建立连接使用的编码;character_set_database数据库的编码;
character_set_results结果集的编码;
character_set_server数据库服务器的编码;
只要保证以上四个采用的编码方式一样,就不会出现乱码问题。
提交数据中文乱码
提交数据中文乱码
jsp文件单独设置成UTF-8
提交数据中文乱码
1.tomcat 服务器设置的编码 只对 get请求有效

2.post请求是正文提交,只需要设置request .setCharacterEncoding即可,但是这样很麻烦一般会用过滤器去做(常用的spring的 字符集过滤器)

3.上面两种可以解决大多数的乱码问题,但是如果你用了struts等MVC框架,请检查 对应的struts.properties里面配置的编码,如果经过框架处理已经转换成了不匹配的编码,后面无论怎么转换都是乱码。

提交数据中文乱码
JSP文件里设置一下编码

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明提交数据中文乱码
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!