mysql/mariaDB中文乱码问题的处理

使用mysql/MariaDB数据库插入中文,查询发现乱码?


mariaDB [lhc]> select * from python_test;

+----+-----------+------------+

| id | name      | class_time |

+----+-----------+------------+

|  1 | ??        |          3 |

|  2 | ??        |          2 |

|  3 | ??        |          5 |

|  4 | ???       |          2 |

|  5 | ???       |          2 |

+----+-----------+------------+

5 rows in set (0.00 sec)


原来是编码设置有问题。查看下MariaDB的默认编码格式


MariaDB [lhc]> show variables like "character_set_%" ;

+--------------------------+----------------------------+

| Variable_name            | Value                      |

+--------------------------+----------------------------+

| character_set_client     | utf8                       |

| character_set_connection | latin1                     |

| character_set_database   | latin1                     |

| character_set_filesystem | binary                     |

| character_set_results    | utf8                       |

| character_set_server     | latin1                     |

| character_set_system     | utf8                       |

| character_sets_dir       | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+


将数据库以及表的编码均按照如下修改,然后重新插入数据到表中,即可


/*修改数据库编码*/

MariaDB [lhc]> ALTER database python_test character set utf8;


/*修改表的编码*/

MariaDB [lhc]> ALTER table python_test character set utf8;


再查询,结果正常了。

不过通过java操作MYSQL数据库,显示在WEB页面上,还是乱码,这是怎么回事呢?

image.png


原来问题出在HttpServletResponse上。在返回结果之前,应当加一句:response.setCharacterEncoding("utf-8");


当然,在使用get或者post获取传来的参数,也需要使用request.setCharacterEncoding("UTF-8"),以免乱码。


(点击率:3270)

评论

昵称

 聚享站 | 培训学校管理系统 | 惊觉社区 | 杭州同城分类信息 | 
这视界--www.deepvast.com这视界 合作联系QQ:362733019

浙ICP备17017888号