您的位置:首页 > 编程语言 > Java开发

Java中文乱码问题及其解决方法

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





       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、解决页面数据传输的中文问题:

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

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

                  <filter-name>encodingFilter</filter-name>

                  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

                  <init-param>

                             <param-name>encoding</param-name>

                             <param-value>UTF-8</param-value>

                 <init-param>

                <filter>

                <filter-mapping>

                         <filter-name>encodinFilter</filter-name>

                        <url-pattern>/*</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 即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: