linux下mysql乱码问题的解决方案

所属分类: 数据库 / Mysql 阅读数: 909
收藏 0 赞 0 分享

项目进行到和服务器交互,通过post访问服务器端jsp,jsp访问服务器端mysql数据库,最终返回到客户端的中文出现乱码问题。

在整个流程中,出现错误的原因可能是三个:post未设置编码或者编码不相符合,jdbc出现问题,linux下mysql初始码制问题。

在经过繁琐的排查后,最终确定问题为mysql编码问题。下文介绍如何解决linux下mysql中文乱码问题。

首先进入mysql命令行模式,键入mysql -uroot -p 即可进入。随后键入 SHOW VARIABLES LIKE 'character_set_%'; 

若显示内容类似这样:

+--------------------------+----------------------------------------------+
| Variable_name      | Value                    |
+--------------------------+----------------------------------------------+
| character_set_client   | utf8                     |
| character_set_connection | utf8                     |
| character_set_database  | utf8                     |
| character_set_filesystem | binary                    |
| character_set_results  | utf8                     |
| character_set_server   | utf8                     |
| character_set_system   | utf8                     |
| character_sets_dir    | /alidata/server/mysql-5.1.73/share/charsets/ |

则已修改正确,而mysql默认初始设置的都是latin1而非utf8。

一种解决方法是更改表格的属性设置为utf8或者在创建表格的时候在最后加上DEFAULT CHARSET=utf8。设置表格为utf8码。这样的方法有可能失效。

最根本的解决方法是打开mysql配置文件修改。linux下mysql配置文件名为my.cnf,目录为/etc/my.cnf,打开后按照以下操作:

--在 [mysqld] 标签下加上三行
default-character-set = utf8
character_set_server = utf8
lower_case_table_names = 1 //表名不区分大小写(此与编码无关)
--在 [mysql] 标签下加上一行
default-character-set = utf8
--在 [mysql.server]标签下加上一行
default-character-set = utf8
--在 [mysqld_safe]标签下加上一行
default-character-set = utf8
--在 [client]标签下加上一行
default-character-set = utf8

上述标签若未能全部找到也没关系。再次打开mysql命令行,执行SHOW VARIABLES LIKE 'character_set_%';后若仍存在latin1,则在mysql命令行下执行以下命令:

  •     set character_set_client = utf8;
  •     set character_set_server = utf8;
  •     set character_set_connection = utf8;
  •     set character_set_database = utf8;
  •     set character_set_results = utf8;
  •     set collation_connection = utf8_general_ci;
  •     set collation_database = utf8_general_ci;
  •     set collation_server = utf8_general_ci;

执行后再执行上述show 命令可得到目标结果。

设置完成后需要重新启动mysql,重启命令 /etc/init.d/mysqld restart  。

原数据表需要删除后重建。

最终完成,大功告成。

小结

1、修改/etc/my.cnf文件,增加以下几行:

[client]
# pipe=
# socket=MYSQL
port=3306
default-character-set=utf8
[mysql]
no-beep
# default-character-set=
default-character-set=utf8
# SERVER SECTION
# ----------------------------------------------------------------------
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this 
# file.
# server_type=3
[mysqld]
character_set_server=utf8

2、重启mysql服务:

service mysql stop;
service mysql status;
service mysql start;
或者 service mysql restart;

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

更多精彩内容其他人还在看

mysql保存微信昵称特殊字符的方法

我在用mysql 保存微信昵称,当插入昵称数据的时候,报错。接下来通过本文给大家介绍mysql保存微信昵称特殊字符的方法,需要的朋友一起看看吧
收藏 0 赞 0 分享

Ubuntu18.04 安装mysql8.0.11的图文教程

本文通过图文并茂的形式给大家介绍了Ubuntu18.04 安装mysql8.0.11的方法,非常不错,具有一定的参考借鉴价值,需要的的朋友参考下吧
收藏 0 赞 0 分享

MySQL中有哪些情况下数据库索引会失效详析

这篇文章主要给大家介绍了关于MySQL中有哪些情况下数据库索引会失效的相关资料,文中通过图文介绍的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Mysql数据库从5.6.28版本升到8.0.11版本部署项目时遇到的问题及解决方法

这篇文章主要介绍了Mysql数据库从5.6.28版本升到8.0.11版本过程中遇到的问题及解决方法,解决办法有三种,每种方法给大家介绍的都很详细,感兴趣的朋友跟随脚本之家小编一起学习吧
收藏 0 赞 0 分享

mac 装5.6版本mysql 设置密码的简易方法

这篇文章主要介绍了mac 装5.6版本mysql 设置密码的简易方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Windows系统中完全卸载MySQL数据库实现重装mysql

这篇文章主要介绍了Windows系统中完全卸载MySQL数据库实现重装mysql数据库的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
收藏 0 赞 0 分享

设置Mysql5.6允许外网访问的详细流程分享

今天小编就为大家分享一篇设置Mysql5.6允许外网访问的详细流程分享,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Linux安装mysql并配置外网访问的实例

今天小编就为大家分享一篇Linux安装mysql并配置外网访问的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

mysql 开放外网访问权限的方法

今天小编就为大家分享一篇mysql 开放外网访问权限的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

MySql 5.7.21免安装版本win10下的配置方法

这篇文章主要介绍了MySql 5.7.21免安装版本win10下的配置方法,本文图文并茂给大家介绍的非常详细,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多