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;

总结

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

(0)

相关推荐

  • linux安装python修改默认python版本方法

    linux默认是安装了python,默认是安装python2.6.6,可能安装的版本是不能符合我们需要的python要求的.我们需要重新安装python的版本,今天演示一下安装python3 首先下载一个  wget  文件的地址  执行命令进行下载 下载完成以后进行解压,解压完成以后进行安装,执行tar -zxvf Python-3.6.1.tgz解压 cd Python-3.6.1 进入目录 ./configure --prefix=/usr/local/python3  配置python安

  • 在Linux中如何查看可用的网络接口详解

    前言 在我们安装完一个 Linux 系统后最为常见的任务便是网络配置了.当然,你可以在安装系统时进行网络接口的配置.但是,对于某些人来说,他们更偏爱在安装完系统后再进行网络的配置或者更改现存的设置. 众所周知,为了在命令行中进行网络设定的配置,我们首先必须知道系统中有多少个可用的网络接口.本次这个简单的指南将列出所有可能的方式来在 Linux 和 Unix 操作系统中找到可用的网络接口. 在 Linux 中找到可用的网络接口 我们可以使用下面的这些方法来找到可用的网络接口. 方法 1 使用 if

  • Linux上创建、列出、删除Docker容器方法总结

    1.启动Docker容器 使用下面的命令启动新的Docker容器.这将启动一个新的容器,并为你提供使用/bin/bash shell访问该容器的权限. # docker run [OPTIONS] <IMAGE NAME> [COMMAND] [ARG...] 例如,下面的命令将使用名为"ubuntu"的图像创建新的docker容器.要列出所有可用图像,请使用docker images命令. # docker run -i -t ubuntu /bin/bash 要退出Do

  • Linux程序运行时加载动态库失败的解决方法

    Linux下不能加载动态库问题 当出现下边异常情况 ./test: error while loading shared libraries: libmfs_open.so: cannot open shared object file: No such file or directory 若动态库的路径在(/usr/cluster/.share/lib) 解决办法: 方法一.在/etc/ld.so.conf文件中添加路径,vi /etc/ld.so.conf 添加下边内容 include ld

  • VMware下Linux CentOS6.9安装图文教程

    技术小白,记录一下自己第一次安装Linux系统的过程. 首先,请在Windows7下安装VMware虚拟机,这个比较简单,直接从官网下载安装即可,这里不再叙述. 接着,从官网直接下载CentOS6.9的iso镜像文件,地址 下载完成之后,下面就是安装过程: 第一步:打开VMware,点击创建新的虚拟机或者点击文件--新建虚拟机: 第二步:默认选择典型,点击下一步: 第三步:点击安装程序光盘映像文件-选择下载好的CentOS的iso文件路径,再点击稍后安装操作系统,点击下一步: 第四步:客户操作系

  • Linux下mysql 8.0.15 安装配置图文教程以及修改密码

    写这篇博客是为了记住我刚刚安装成功的MySQL8.0.15,之前在网上找了很多博客最终没能成功,然后去google上找了几篇最终装好了,装数据库之前我是重装了服务器系统的,所以这个安装环境是很干净的,写着篇博客希望能帮的上你,同时我自己以后装也不用到处去找了. 第一步,下载安装包  wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm,其他版本自行去官网下载 先创建文件夹,在/usr/local/目录下创建

  • Linux系统查看CPU、机器型号、内存等信息

    系统维护时随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 linux 中,可以通过 top 命令来查看 CPU 使用状况.关于 top 命令的详细说明请参看 使用top命令分析linux系统性能的详解 这篇文章. top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器:不过这里我们主要是介绍一下 linux 系统如何查看CPU信息.机器型号.内存信息等. 系统 # uname -a # 查看内核/操作系统/

  • linux查看端口是否开放的方法总结

    方法一:使用lsof命令 我们可以使用lsof命令来检查某一端口是否开放,基本语法如下: lsof -i:端口号 如果没有任何输出则说明没有开启该端口号 下图以80端口和53端口为例,检查80端口和53端口是否开放 也可以使用lsof -i命令直接将开放的端口输出,来查看某些端口是否开放. 方法二:使用netstat命令 netstat命令可以提供有关主机的网络相关信息. 我们可以使用netstat -atu检查linux中的开放端口 我们使用的netstat标志:-a,-t 和 -u 介绍 -

  • 电脑意外关机后VMware中linux不能联网问题的解决方法

    问题描述:之前已经配置过linux系统的网卡文件/etc/sysconfig/network-scripts/ifcfg-eth0了,依靠NAT服务能正常访问外网.但在电脑意外关机,导致VMware被强制关闭后,再次开机启动VMware时,发现用远程连接工具并不能连接到虚拟机中的linux,而且在cmd和虚拟机中互相ping对方ip地址,发现并不能ping通同时linux也不能访问外网. 解决办法:目前发现的解决办法有两个 (1)在关闭linux系统后,点击VMware中菜单栏中"编辑"

  • Linux持续集成自动化安装Maven的方法

    解压 Maven 包 tar xf apache-maven-3.5.4-bin.tar.gz 移动 解压后的maven文件 到 /usr/local/ mv apache-maven-3.5.4 /usr/local #!/bin/bash #maven安装目录 mkdir /usr/maven #安装包放置目录 cd /usr/src http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.4/source/apache-maven-3.5.4

随机推荐