Linux下MySQL 5.5中文乱码解决方法

分析问题排查 登录MySQL查看用SHOW VARIABLES LIKE ‘character%’;

character_set_database和character_set_server的默认字符集还是latin1。

+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |

解决方法

修改mysql的my.cnf文件中的字符集键值

1、在[client]字段里加入default-character-set=utf8,如下:

 代码如下 复制代码

[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8

2、在[mysqld]字段里加入character-set-server=utf8,如下:

 代码如下 复制代码

[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
character-set-server=utf8

3、在[mysql]字段里加入default-character-set=utf8,如下:

 代码如下 复制代码

[mysql]
no-auto-rehash
default-character-set=utf8

修改完成后,service mysql restart重启mysql服务就生效

解决办法二

修改MySql服务器各个数据库的字符集

如果在设置服务器字符集之前,存在了数据库。需要更改数据库的字符集:

 代码如下 复制代码

use datatable_name;
alter database character set gbk;

在程序查询写入时操作

例子1是通过php直接插入数据:
a.php

 代码如下 复制代码

<?php
mysql_connect('localhost','user','password');
mysql_select_db('my_db');

//请注意,这步很关键,如果没有这步,所有的数据读写都会不正确的
//它的作用是设置本次数据库联接过程中,数据传输的默认字符集
mysql_query("set names utf8;");

//必须将gb2312(本地编码)转换成utf-8,也可以使用iconv()函数
mysql_query(mb_convet_encoding("insert into my_table values('测试');", "utf-8", "gb2312"));
?>

例子是通过页面提交插入数据2:
b.php

 代码如下 复制代码

<?php
//输出本页编码为utf-8
header("content-type:text/html; charset=utf-8");

mysql_connect('localhost','user','password');
mysql_select_db('my_db');

if(isset($_REQUEST['name'))
{
//由于上面已经指定本页字符集为utf-8了,因此无需转换编码
mysql_query(sprintf("insert into my_table values('%s');", $_REQUEST['name']));
}

$q = mysql_query("select * from my_table");
while($r = mysql_fetch_row($q))
{
print_r($r);
}
?>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<form action="" method="post">
<input type="text" name="name" value="">
<input type="submit" value='submit'>
</form>

时间: 2024-10-14 09:08:38

Linux下MySQL 5.5中文乱码解决方法的相关文章

mysql source导入中文乱码解决方法

错误提示 就是中文全部显示乱码了 解决方式  查询mysql设置 mysql> s -------------- c:Program FilesMySQLMySQL Server 5.0binmysql.exe  Ver 14.12 Distrib 5.0.67,  for Win32 (ia32) Connection id:          1 Current database:       common Current user:           root@localhost SSL

zend studio 5.5中文乱码解决方法

zend studio 5.5中文乱码解决方法 购买zend产品的用户太少了还是我安装的问题,装好后桌面选项中竟然没有"简体中文"的语言选项了,到配置文件夹里看了一会,在系统盘中搜索XML文件desktop_options.xml(例如:C:Documents and SettingsAdministratorZDEconfig_5.5 目录下的 desktop_options.xml) <customized_property ID="desktop.language

远程linux xshell下输出中文乱码解决方法_unix linux

使用xshell登录中文版CentOS或者redhat时,在xshell下如果输出的是中文的话可能会显示乱码,通过如下办法可以有效的解决乱码问题 linux中文乱码解决方法如下: 复制代码 代码如下: [root@localhost ~]# cd /etc/sysconfig/ [root@localhost sysconfig]# cp i18n i18n.bak #备份i18n文件 [root@localhost sysconfig]# echo "" >i18n [root

php excel reader2.21导出excel中文乱码解决方法说明

之前我的PHP教程博客访友询问使用php excel reader2.21导出excel时中文出现乱码如何解决,现我说明下php excel reader导出excel中文乱码的解决方法,希望对使用php excel reader导出excel的朋友有所帮助. php excel reader介绍 php excel reader是一个读取Excel xsl文件内容的一个php excel类,目前最新版本是php excel reader2.21,网上可自行搜索,sourceforge上的php

ajax中文乱码解决方法总结

ajax乱码解决办法一: 在服务器指定发送数据的格式: 在jsp文件中: response.setContentType("text/text;charset=UTF-8");//返回的是txt文本文件 或是 response.setContentType("text/xml;charset=UTF-8");//返回的xml文件 PHP:header("Content-Type:text/html;charset=GB2312"); ajax乱码

Linux下安装MariaDB数据库问题及解决方法(二进制版本的安装)_Linux

MariaDB数据库 分为源代码版本和二进制版本,源代码版本需要cmake编译,这里是二进制版本的安装 # tar zxvf mariadb-5.5.31-linux-x86_64.tar.gz # mv mariadb-5.5.31-linux-x86_64 /usr/local/MySQL (必需这样,很多脚本或可执行程序都会直接访问这个目录) # groupadd mysql 增加 mysql 属组 # useradd -g mysql mysql 增加 mysql 用户 并归于mysql

使用WebLogic的OTN插件时Eclipse控制台输出中文乱码解决方法

  使用WebLogic时控制台输出中文乱码解决方法1.找到weblogic安装目录,当前项目配置的domain2.找到startWebLogic.cmd文件3.打开文件,在"call "%DOMAIN_HOME%\bin\startWebLogic.cmd" %*"上面增加如下代码即可,主要是设置UTF-8啊. @ECHO OFF @REM WARNING: This file is created by the Configuration Wizard. @RE

python 中文乱码解决方法

比如我从网上下载一些信息或写个电子邮件程序下载到本地,以记事本(txt) 形式写入并保存在本地计算机,为什么看到只是英文和乱码的?该怎样做呢? 答 乱码原因: 因为你的文件声明为utf-8,并且也应该是用utf-8的编码保存的源文件.但是windows的本地默认编码是cp936,也就是gbk编码,所以在控制台直接打印utf-8的字符串当然是乱码了. 解决方法: 在控制台打印的地方用一个转码就ok了,打印的时候这么写: print myname.decode('utf-8').encode('gb

SMARTY 中文乱码解决方法

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-