zoukankan      html  css  js  c++  java
  • java中可以出现的中文乱码的集中解决

    从学习javaweb开始就会经常遇到中文乱码,今天就做以下记录:

    1. 要避免项目中遇到乱码,首先就是在搭建项目的设置工作空间的字符编码,若是多人开发,就更应该做到统一,在eclipse中选择widnow -> preferences -> genreal -> workspace,在这里设置工作空间的字符编码,我通常都会设置成utf-8

    1.1 最好的方式就是所有的都统一用一种编码,在所有jsp页面中设置编码为utf-8,这样可以很大程度上避免乱码。在jsp的开头设置编码

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

    2. 在前台向后台发送请求的时候也可能会出现中文乱码,这里又要分请求的方式,

    2.1 若是采用get请求出现的中文乱码,那么就有两种解决方法:

    第一种就是设置tomcat服务器的server.xml这个文件,找到下面的这个段代码,添加上URIEncoding="UTF-8",这种方法最简单

    <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

    第二种就是在代码中使用String的构造方法转码,首先使用request.getParamter获取到参数,在用这个字符串构造出指定字符编码的String,eg:

    new String(request.getParamter("xxx","utf-8")

    若是在js中请求后台,也是使用get的方式请求,还可以使用javascript提供的encodeURI这个方法进行转码,然后再后台java中使用URLDecode.decode()进行解码,在java中有URLEncode.encode(),URLDecode.decode() 这个两个方法,一个是转码,一个是解码,对应的jsavascript中也有类似的两个方法。

    2.2 若采用的是post方式请求后台出现乱码,也有几种方式解决:

    第一种   使用request.setcharacterencoding这个方法设置请求内容的编码,这个方法只对post方式起作用就,自己也可以自己写一个过滤器来设置编码。

    第二种   若项目中使用了Struts2,那么很简单,在struts.xml中配置一个参数

    <constant name="struts.i18n.encoding" value="utf-8" />

    第三种   若使用了spring也简单,配置一个spring中提供的拦截器:

    <filter>
        //过滤器使用spring类CharacterEncodingFilter
                 <filter-name>encodingFilter</filter-name>
                 <filter-class>
                            org.springframework.web.filter.CharacterEncodingFilter
                 </filter-class>
                 <init-param>
                            <param-name>encoding</param-name>
        //过滤器过滤后的编码为utf-8
                            <param-value>utf-8</param-value>
                 </init-param>
      </filter>
      <filter-mapping>
        //过滤所有的路径:/*代表所有的路径
                 <filter-name>encodingFilter</filter-name>
                 <url-pattern>/*</url-pattern>
      </filter-mapping>

    3. 从后台采用request.getWriter的流形式向前台写内容,若是出现乱码,采用response. setcharacterencoding设置编码,可以解决乱码,还可以采用response.setContentType("text/html; charset=utf-8")来设置页面的编码

    4. 后台存入数据到数据库中也有可能会出现乱码,在取出来也就是是乱码,解决的方式就是设置数据库的字符编码,设置字符编码为utf-8,这个要看使用的什么数据库,这里说下mysql中设置数据库中的编码,在数据安装完成之后配置mysql数据库的字符编码为utf-8;若是数据库已经安装了可以到mysql的安装目录中找到配置启动方式:


      



  • 相关阅读:
    爱奇艺首页导航轮播特效
    闭包的应用
    时间日期Date类型
    php连接数据库
    封装cookie.js、EventUtil.js、
    时间日期格式
    mysql数据库修改密码
    jquery选择器的使用
    用js完成blog项目
    Hibternate框架笔记
  • 原文地址:https://www.cnblogs.com/riasky/p/3476534.html
Copyright © 2011-2022 走看看