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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,869评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,098评论 25 708
  • 热,一动一身汗,眼睛总是被汗水蒙住,不舒服。恨不得放一屋子的冰块。 今日行程—— 07:20起床,背单词,围棋,洗...
    玲珑小巫阅读 230评论 0 0
  • 昨天手机更新,之前删掉的图片也都回来了,一张张看着,好心酸。 01 翻着相册里之前截的图,看着和你的聊天,以前会想...
    徐慕熹微阅读 4,397评论 100 72
  • 工作目录 先来说说Golang的工作目录,安装好Golang后,需要做的一件事情就是设置工作目录,所有的项目、工具...
    乐百川阅读 3,119评论 0 6