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

作者:dq012 时间:2024-01-26 11:28:06 

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

来源:https://blog.csdn.net/daqiang012/article/details/82658243

标签:mysql,linux,乱码问题
0
投稿

猜你喜欢

  • Python+OCR实现文档解析的示例代码

    2023-11-22 02:34:19
  • python修改FTP服务器上的文件名

    2022-11-08 00:22:15
  • PHP面向对象程序设计之类与反射API详解

    2023-11-19 12:44:12
  • Python 中的 import 机制之实现远程导入模块

    2022-10-24 10:25:10
  • mpvue跳转页面及注意事项

    2024-05-02 16:09:57
  • Python用函数思想完成哥德巴赫猜想代码分析

    2022-05-05 11:42:06
  • Python实现队列的方法

    2023-08-29 06:45:30
  • Python常用扩展插件使用教程解析

    2021-12-22 03:00:47
  • Python中ROC曲线绘制

    2023-05-28 16:38:15
  • python字符串拼接.join()和拆分.split()详解

    2021-11-12 04:09:17
  • 解决MySQL 5.7.9版本sql_mode=only_full_group_by问题

    2024-01-26 15:02:22
  • pygame游戏之旅 按钮上添加文字的方法

    2022-09-28 23:41:39
  • python如何查找图片按钮的坐标位置

    2023-01-07 21:57:53
  • 小白讲座:在win下mysql备份恢复命令概括

    2009-09-05 09:43:00
  • 解决Python下imread,imwrite不支持中文的问题

    2022-11-15 06:46:23
  • 计算机管理服务中找不到mysql的服务的解决办法

    2024-01-26 03:31:34
  • Django Admin后台添加数据库视图过程解析

    2024-01-27 06:40:17
  • 深入Golang中的sync.Pool详解

    2024-02-02 05:31:27
  • 在ADF中跟踪SQL执行时间实现代码

    2024-01-16 16:09:00
  • 动态SQL中返回数值的实现代码

    2012-01-05 18:53:54
  • asp之家 网络编程 m.aspxhome.com