业务编程

web项目经常遇到的乱码问题

2017-01-09  本文已影响23人  nextbang

开发web项目经常会遇到请求接口乱码、提交表单乱码,存入数据库乱码,网页显示乱码等情况。

乱码的原因很简单,都是因为数据传输方和接收方编码不一致导致的,但具体实现和配置,还是有不少地方,下面列举常见的编码设置(针对java项目,并且统一使用utf-8编码)。

nginx配置(GET乱码)

      server {

        .....

        charset utf-8,gbk;

      }

tomcat配置(GET乱码)

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

spring配置(GET乱码)

@RequestMapping(method = RequestMethod.GET,value="/xxxx",
produces="text/html;charset=UTF-8")

web.xml配置(POST乱码)

<filter>
    <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

数据库连接

jdbc:mysql://x.x.x.x:3306/xxxx?useUnicode=true&characterEncoding=utf8

数据库和表定义

CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

create  table blog_user
(
   ...
)engine=innodb default charset=utf8 auto_increment=xxx;

数据库配置文件(my.cnf)

[mysqld]下的default-character-set为utf8
[mysql]default-character-set=utf8

数据库客户端连接

SHOW VARIABLES LIKE ‘character_set_%’;
set names utf8;

以上的配置基本能让一个常规的web项目正常的提交和展示数据了。

上一篇下一篇

猜你喜欢

热点阅读