编码的时候不能错,错了就拿不回来数据了,比如;String name = new String("犀利".getBytes("ISO-8859-1"));
编码的时候就错了,用的是ISO-8859-1,这样的Bytes数据是不可取的,不管以什么编码去解析,都不能取回犀利。
所以能解决乱码的问题必须是第一步编码正确:如
- String name = new String("犀利".getBytes("GBK"),"ISO-8859-1");
- name = new String(name.getBytes("ISO-8859-1"),"GBK");
这样就能正确的显示出犀利。上面的编码正确,然后用的是ISO-8859-1去解码。所以第一次解码得出的name是乱码,于是我们把得到的name乱码再次以ISO-8859-1去编码,逆向回去,得到的是GBK的Byte编码数据,然后再按照正确的对应的GBK编码方式解码,所以就能得到犀利。
看看我们的乱码问题:第一个页面:
- package com.servlet;
-
- import java.io.IOException;
- import java.io.PrintWriter;
-
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
- @SuppressWarnings("serial")
- public class Login extends HttpServlet {
-
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
-
- doPost(req, resp);
- }
-
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
-
- resp.setContentType("text/html;charset=utf-8");
-
-
-
-
- PrintWriter pw = resp.getWriter();
-
- pw.println("<html>");
- pw.println("<body>");
- pw.println("<form action=check method='get'>");
- pw.println("用户名:<input type='text' name='userName'/><br/>");
- pw.println("密 码:<input type='password' name='passW'/><br/>");
- pw.println("<input type=submit value='提 交'/>");
- pw.println("</form>");
- pw.println("</body>");
- pw.println("</html>");
- }
- }
第二个页面:
- package com.servlet;
-
- import java.io.IOException;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
-
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
-
- public class CheckLg extends HttpServlet {
-
-
-
-
- private static final long serialVersionUID = 7384793825684059007L;
-
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
-
- doPost(req, resp);
- }
-
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
-
- Connection con;
- PreparedStatement pst;
- ResultSet rs;
-
- resp.setContentType("text/html;charset=utf-8");
- String userName = new String(req.getParameter("userName").getBytes(
- "ISO-8859-1"), "GBK");
-
-
-
- System.out.println("--------"+userName+"----------");
-
- <span style="white-space: pre;"> </span>}
- }
对于sendRedirect的乱码问题是这样解决的:
- String infos = URLEncoder.encode("请重新登录","utf-8");
- resp.sendRedirect("login?info="+infos);
先用URLEncoder去编码,并且指定编码的编码表如UTF-8
当第二页面接收到数据的时候就会自动的URLDecoder得到我们的字节流数据,然后tomcat又根据自己的对get的方法的ISO-8895-1去解码,所以产生了乱码,
这个时候我们就要重新以ISO-8859-1去解码,获得之前的字节数组,然后再进行正确的UTF-8编码则得到正确的结果。
- String info = req.getParameter("info");
- String erro= new String(info.getBytes("ISO-8859-1"), "UTF-8");
至于post类型的方法处理乱码很简单.........
分享到:
相关推荐
JSP出现中文乱码问题解决方法详解.docx
MySQL中各种中文乱码,着实让人头痛,详解一番如何多种方法解决它
mysql解压版详细配置说明,及解决中文乱码问题 含更改root初始密码方式。
解决使用smartupload上传普通字段中文乱码问题,在servlet中可以通过smart.getRequest().getParameter()直接获取
SecureCRT中文乱码 两种解决方法【方法详解】.docx
主要介绍了linux下python中文乱码解决方案详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
下面来逐一解决其中的乱码问题。 一、JSP页面中文乱码 在JSP页面中,中文显示乱码有两种情况:一种是HTML中的中文乱码,另一种是在JSP中动态输出的中文乱码。 先看一个JSP程序: <%@ page language=java ...
一、出现原因:readline模块没有安装 二、解决方式: # 安装readline模块 yum -y install readline-devel # 进入Python安装目录 ... 您可能感兴趣的文章:解决PyCharm控制台输出乱码的问题详解Python
jsp 乱码详解(jsp,mysql,tomcat) 基本涵盖所有的乱码解决方法。使用的utf-8作为例子
JDBC连接mysql处理中文时乱码解决办法详解 近日,整合的项目需要跟一个比较老版本的mysql服务器连接,使用navicat查看,发现此mysql服务器貌似没有设置默认编码,而且从操作此mysql的部分php文件看,应该是使用的gb...
本篇文章主要主要介绍了详解Linux中文乱码问题终极解决方法,非常具有实用价值,需要的朋友可以参考下。
主要介绍了redis 解决key的乱码问题,并清理详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
META标签,是HTML语言head区的一个辅助性标签
本篇文章主要介绍了Spring MVC3返回JSON数据中文乱码问题解决,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了详解关于java文件下载文件名乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
本文档有jsp编程中常见的一些乱码问题,即出现原因和解决方案,是个不错的文档