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
猜你喜欢
- 废话不多说了,直接给大家贴代码了,代码写的不好还去各位大侠见谅。#-*-coding:utf-8-*- #1、字典dict = {'
- tkinter获取复选框(Checkbutton)的值定义GUI:from tkinter import *# 初始化Tk()myWindo
- 文 | 李晓飞来源:Python 技术「ID: pythonall」爬虫程序想必大家都很熟悉了,随便写一个就可以获取网页上的信息,
- 本文实例讲述了Python多线程threading模块用法。分享给大家供大家参考,具体如下:多线程 - threadingpython的th
- Eric A. Meyer 对基于 Web 标准的 CSS 与 HTML 绝非一知半解,他是这个领域杰出的专家,曾写过不少 CSS 方面的书
- 第一种情况os.system('ps aux')执行系统命令,没有返回值第二种情况result = os.popen(
- 虚拟环境的创建命令行窗口中使用conda create -n 环境名 python=所需python版本即可创建虚拟环境pytorch的gp
- 上一篇自动在Windows中运行Python脚本并定时触发功能实现传送门链接运行Python脚本:.bat文件在Windows中,.bat文
- 网页制作中需要把握好很多原则和细节,今天我们来谈谈网页设计中的平衡、对比、连贯和留白。一、平衡如果你的页面是平衡的,当用户浏览这个页面的时候
- 1、一次二次多项式拟合一次二次比较简单,直接使用numpy中的函数即可,polyfit(x, y, degree)。2、指数幂数拟合curv
- 近日,朋友写一个关于成绩管理的系统,其中遇到一个小问题。如果按照SQLSERVER的ORDER 排序时,比如遇到两个100分,结果必然是名次
- js格式化金额,可选是否带千分位,可选保留精度,也是网上搜到的,但是使用没问题 /* 将数值四舍五入后格式化. @param num 数值(
- 以下是YUI中不建议用的一些说明: 表达式的问题就在于它的计算频率要比
- 1.参考Beautiful Soup and Unicode Problems详细解释unicodedata.normalize('
- 或许你已经看过很多关于CSS3动画的技术,包括前端观察之前发表的一些,那么现在就情看一看CSS3动画的魅力吧。这里是一辑47个令人瞠目结舌的
- HTML5 越来越引起人们的关注,苹果甚至将 HTML5 视为 Flash 的掘墓人 。然而,作为一种尚未成型的技术,HTML5 对很多人来
- 本章的前面讨论如何使用SQL向一个表中插入数据。但是,如果你需要向一个表中添加许多条记录,使用SQL语句输入数据是很不方便的。幸运的是,My
- 弄了半天也没有找到原因,然后又重新到网上下载几个,还是不行,郁闷坏了,最后结合其他编辑器的用法,才知道是配置文件夹中上传文件夹的路径写错了
- 在python3爬虫中如何我们想要导入/导出Redis数据,就要安装使用RedisDump。RedisDump是一个用于Redis数据导入/
- Python自动化办公之删除重复的视频文件获取所有文件路径import osimport filecmpfile_list=[]new_li