Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流的,如果Java和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。另外在HTML页面中,也是由于页面的编码与浏览器解释所用的编码不一致,导致出现乱码,如图所示



java 中文名乱码 java出现中文乱码_Java



       1、HTML页面

                     为了使HTML页面很好的支持中文,在每个HTML页面的<head>标签内部增加

<head>
                     ......
                     <META http-equiv=Content-type content="texy/html;charset=UTF-8">
                     ......
                    <head>

      2、JSP页面

                    pageEncoding是jsp文件本身的编码contentType的charset是指服务器发送给客户端时的内容编码

<%@ page language="java" contentType="text/html;charset=UTF-8"    pageEncoding="UTF-8"%>

     3、解决页面数据传输的中文问题:

                   最佳方法是采用编码过滤器来解决,设置一个过滤器,把所有的数据都进行转码

                  <!--定义编码过滤器-->

encodingFilter</filter-name>
org.springframework.web.filter.CharacterEncodingFilter</filter-class>
                  <init-param>
encoding</param-name>
UTF-8</param-value>
                 <init-param>
                <filter>
                <filter-mapping>
encodinFilter</filter-name>
/*</url-pattern>
              <filter-mapping>

     4、HTtp(post)请求中的中文乱码


                  在Servlet页面中 添加

response.setCharacterEncoding("UTF-8");

     5、HTTP(get)请求中的中文乱码问题:


                 如果是get,需要获取请求的字符串,然后把整个字符串进行转换,同时需要知道原编码,下例假设为 ISO-8859-1

String param = new String(request.getParameter("param").hetBytes("ISO-8859-1","UTF-8"));

    6、Mysql数据库中的中文问题:


                解决Mysql数据库中文问题主要在JDBC驱动的URL上添加:

jdbc:mysql://localhost/test?user=root&password=123456&userUnicode=true&characterEncoding=UTF-8;

    7、Mysql数据库在windows系统中,dos中显示表中数据为乱码,但是数据输入与输出均正常:


                这是因为windows系统中,默认的编码是中文,而写入的时候是UTF-8,

只需要设置 set names gb2312 即可