当前位置: 首页 > 编程笔记 >

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

吴修洁
2023-03-14
本文向大家介绍linux下mysql乱码问题的解决方案,包括了linux下mysql乱码问题的解决方案的使用技巧和注意事项,需要的朋友参考一下

项目进行到和服务器交互,通过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;

总结

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

 类似资料:
  • 本文向大家介绍Linux下乱码问题的解决方案小结,包括了Linux下乱码问题的解决方案小结的使用技巧和注意事项,需要的朋友参考一下 linux系统中文件名内容为urf8编码, windows系统中文件名默认为gbk编码, 多数文档使用gbk编码,系统采用utf8编码 无中文输入法导致的乱码 1、ibus输入法 Ubuntu 系统安装后已经自带了ibus输入法,在英语环境下默认不启动。配置ibus自

  • 本文向大家介绍Navicat for MySQL 乱码问题解决方法,包括了Navicat for MySQL 乱码问题解决方法的使用技巧和注意事项,需要的朋友参考一下 Navcat for MySQL这个软件有多好用就不用我废话了,软件本身使用UTF8编码,我MySQL服务器和数据也都是UTF8编码,但是在列表里非ASCII字符就乱码,经过一番查找问题出在连接选项上,这里可以选择“使用MySQL字

  • 本文向大家介绍解决linux的redhat版上mysql字符乱码的问题,包括了解决linux的redhat版上mysql字符乱码的问题的使用技巧和注意事项,需要的朋友参考一下 linux上安装了mysql服务,默认的字符编码不是utf8,所以会出现中文乱码。 解决方案如下: 1、修改文件/etc/my.cnf,在mysqld配置的最后一行加上character-set-server=utf8 vi

  • 本文向大家介绍Mysql中文乱码问题的最佳解决方法,包括了Mysql中文乱码问题的最佳解决方法的使用技巧和注意事项,需要的朋友参考一下 一般来说,造成MySQL出现中文乱码的因素主要有下列几点: 1.server本身字符集设定的问题,例如还停留在latin1 2.table的语系设定问题(包含character与collation) 3.客户端程序(例如php)的连线语系设定问题 对此,强烈建议使

  • 本文向大家介绍解决springmvc+mybatis+mysql中文乱码问题,包括了解决springmvc+mybatis+mysql中文乱码问题的使用技巧和注意事项,需要的朋友参考一下 近日使用ajax请求springmvc后台查询mysql数据库,页面显示中文出现乱码 最初在mybatis配置如下 其中表News的text字段为blob类型 如此查出的text值在控制台中一直显示乱码。 之后g

  • 本文向大家介绍linux下因为系统编码问题造成乱码的快速解决方法,包括了linux下因为系统编码问题造成乱码的快速解决方法的使用技巧和注意事项,需要的朋友参考一下 最近一段时间遇到一些润乾的应用在linux系统下面乱码的问题,最后检查后都发现是客户的linux系统默认编码设置的不正确造成的,这种原因造成乱码的现象一般都是程序里面写死了的中文字符能正常展现,但是从数据库中取出来的或者从程序中读出来的