美文网首页业务编程
web项目经常遇到的乱码问题

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

作者: nextbang | 来源:发表于2017-01-09 20:30 被阅读23次

    开发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项目正常的提交和展示数据了。

    相关文章

      网友评论

        本文标题:web项目经常遇到的乱码问题

        本文链接:https://www.haomeiwen.com/subject/mbmhbttx.html