怎样解决关于MySQL显示中文的问题?

第一种方法,很精辟的总结:

经常更换虚拟主机,而各个服务商的MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧:

WINDOWS 下导入应该这样
使用MYSQL的命令
在DOS 命令下进入mysql的bin目录下,输入mysql -uroot -p密码 数据库名称
只好查资料,发现了一个解决方法,就是在mysql_connect后面加一句SET NAMES UTF8,即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用SET NAMES GBK,代码如下:

$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
mysql_query("SET NAMES 'GBK'");

数据库字符集为utf-8

连接语句用这个
mysql_query("SET NAMES 'UTF8'");
mysql_query("SET CHARACTER SET UTF8");
mysql_query("SET CHARACTER_SET_RESULTS=UTF8'");

还有个方法就是,如果你自己的机器的话,可以更改MYSQL字符集,一般在MYSQ4和MYSQL5这两个版本中有效


--------------------------------------------------------------------------------

第二个方法:很不错的解说,可以试一下

mysql乱码处理总结:

      (1)java中处理中文字符正常,在cmd client中显示乱码是字符集的问题.

      (2)字段长度设置够长,但插入中文字符时提示com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column错误是字符集的问题.

      (3)乱码问题归根到底是字符集的问题,那就从字符集设置方面考虑,不外乎下面几个方面:server,client,database,connection,results.

-------------------------解决办法----------------------

(1)修改 my.ini(MySQL Server Instance Configuration 文件)

# CLIENT SECTION //客户端

[client]

port=3306

[mysql]

default-character-set=gbk


# SERVER SECTION   //服务端

[mysqld]

default-character-set=gbk

(2)修改data目录中相应数据库目录下的db.opt配置文件

default-character-set=gbk
default-collation=gbk_chinese_ci

(3)数据库连接串中指定字符集

URL=jdbc:mysql://yourIP/college?user=root&password=yourPassword&useUnicode=true&characterEncoding=gbk 注:在mysql4.1.0版 要加useUnicode=true&characterEncoding=gbk 如果是5.0版以上的,加不加都是没有关系的!

(4)在创建数据库时指定字符集

create database yourDB CHARACTER SET gbk;

(5)在dos命令上要设置

set names gbk


      好了,经过检查上面四个方面的设置,应该 OK 了!不会出现诸如
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column等问题.




Mysql中文乱码解决
原来常常在群里看到mysql的乱码问题,但是由于本人一直在用oracle和sql server所以没多在乎,昨天用了用mysql结果就遇到了传说中的乱码…..。现在我们来讲讲mysql的乱码问题。首先你进入的你mysql
用show variables查看


这 里可以查看到你的字符集,character_set_server是服务器编码。现在我们默认的是latin1要改变服务器的编码必须重新启动服务器, 我们先用mysqladmin –uroot shutdown关闭服务器,然后mysqld –C GBK启动服务器 –C是character_set_server的一个简写(可以也可以写成mysqld –character_set_server gbk).这样修改以后我们再进入mysql查看就会显示:

这样我们就把服务器和数据库的编码改为了GBK。
现在我们就可以插入中文字符串了,但是为什么有时间还是会显示
Exception in thread "main" com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'name' at row 1
这是因为你只是修改了mysql的服务器的字符编码,并没有修改已经有数据库的编码,这时候你需要手动的把data目录下的数据库中的db.opt中的编码改为
default-character-set=gbk
default-collation=gbk_chinese_ci
这样修改以后你在重启服务器就可以插入中文了。
但是这时候还有个问题就是在你应用程序当中显示的是中文字符,但是在命令窗口还是乱码。
这时候你注意我们上面图中的character_set_client字符还是latin1当然显示的是乱码咯哟。所以你进入mysql客户端程序的时候因该把客户端默认的编码改为gbk才能显示正常。
你可以在mysql里修改,也可以在登陆的时候mysql –uroot –default-character-set=gbk修改
如此以来就解决了中文问题了。
我刚开始的时候在程序中加入了一个characterEncoding变量(下图),但是想来想去都觉得这个变量没什么用,所以后来去掉也能显示正常。
jdbc:mysql:// 127.0.0.1:3306/ee?characterEncoding=gbk"


--------------------------------------------------------------------------------

第三种方法,说有太复杂了,反到不知道怎么弄了,你试试,也许可以用得上

1.修改/etc/my.cnf文件,改成这样:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8
[mysql.server]
user=mysql
basedir=/var/lib
[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
注意:就是加入了一句default-character-set=utf8。
2./etc/init.d/mysqld restart 重新启动mysql;
3.打开phpmyadmin,选择lang为"Chines simplifies(zh-utf-8)",选择"MySQL 连接校对"为"utf8_general_ci "点“显示 MySQL 的运行信息”--“变量”,可以看到:
character set client utf8 utf8
character set connection utf8 utf8
character set database utf8 utf8
character set results utf8 utf8
character set server utf8 utf8
character set system utf8 utf8
collation connection utf8_general_ci utf8_general_ci
collation database utf8_general_ci utf8_general_ci
collation server utf8_general_ci utf8_general_ci
从这里可以看到character全部变成utf8了。
有人要问,为什么都要改成utf8呢?改成GB2312不行吗?
解释如下:
我也不想改成utf8,只是phpmyadmin2.6在mysql4.1的时候只会用utf8,连其他页面的charset也都是utf8,改成gb2312一定会乱码,我们只能凑phpmyadmin了。
只有在mysql3.23的时候,phpmyadmin才会多一个gb2312的页面charset,这时候是正常的。
3.将以前的mysql3的库文件导入mysql4.1的库
有两种情况:
一是从phpmyadmin上导入,这时候你要注意的是在选择库文件的页面左下脚有个“文件的字符集:”,默认是utf8,要改成gb2312,否则导进去乱码;
二是在linux下导入,这时候你需要先在库文件的头部加一行:
SET NAMES 'gb2312'; 注意最后也是;号,别漏了。
然后执行mysql -u用户名 -p密码 xxx.sql > 库名
导入完成以后再用phpmyadmin打开看,里面的中文字就是正确的。
4.从mysql4.1里导出库文件
一.用phpmyadmin导出
导出倒是问题不大,如果phpmyadmin的浏览页面里显示的中文是正常的,那么导出肯定也是正常的
二.在linux上导出
如果用mysqldump导出出现了乱码也没有关系,可以运行iconv来转换一下
iconv -c -f UTF-8 -t GB2312 库文件名 > 新的gb2312的库文件名
综上所述,你要注意:
1。尽量在需要导入的库文件的开头加入SET NAMES 'gb2312';告诉mysql你要导入的是一个gb2312的文件;
2。可能你需要这个:
SET NAMES 'utf8';
在登陆到mysql后用,把character的一些默认参数改到utf8上,有时可以减少一些困扰,不过也不是必须的。
在mysql上使用:
SHOW VARIABLES LIKE 'character_set_%';
用来查看当前的状态。
3.如果出现乱码也不要怕,一是你要注意留存原有的备份,二是用iconv来进行转化。
在正常使用之前注意做导入导出的测试,确保万无一失。
最后加一句: www.quicklinux.org原创文章,转载请注明出处。呵呵
邮件: support@quicklinux.org
作者: MySQL 发布日期: 2005-12-14
我升级了MYSQL到4.1.2,phpmyadmin用的是2.6.2。数据表里面有中文的字段中文都变成了乱码,导出数据也是乱码。我用以前的2.5.7没有问题,想问一下,应该在phpmyadmin的那个文件里改哪个设置一下才能显示出来的是正常的中文字?
和字符相关的变量中这几个和sql很有关系:
character_set_client
character_set_connection
character_set_results
此外就是数据库中对相应字段设置的charact set,如果没有对字段设置,缺省是table的charact set,table也没有指定则缺省使用database的。
上面3个变量的作用是这样的,client表示客户端发送过来的字符集,results表示发送到客户端的字符集(这两个分开是因为发送过来和发送过去的不一定是同一个客户端),connection则在客户端和数据库起一个连接作用。
具体是这样:比如我在mysql命令行设置client为gbk,connection为utf8,results为gbk,数据库为big5,
当我发送一个insert语句的时候,这个语句作为gbk代码,先转为utf8代码(connection),再转为big5(database)插入数据库。
而运行一个select语句的时候,从数据库得到的结果则相反的过程,由big5转为utf8,再转为gbk,你得到gbk的结果。
因此最主要的是让client和results和你使用的客户端一致。比如你的网页是utf8编码,你就要设置这两个为utf8。
而在mysql命令行的时候,我用的是2000,需要设置为gbk
而我们用的set names XXX,实际上就是同时设置这3个变量为XXX。
在这样的情况下,我们可以把一个数据库中的不同表或不同字段设为不同的字符集,只要上面3个设置正确,就可以在数据库中同时使用不同的字符集。
注意要保证你的数据库中的字符已经使用了正确的字符集,比如如果一开始你设置错误,插入数据后,本身数据的编码就是不正确的,然后即使设置改回来,也不可能得到正确的显示了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26842371/viewspace-722330/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26842371/viewspace-722330/

Mysql出现乱码决解方法 阅读详情

相关推荐

解决MySQL显示中文问题

第一次用MySQL,被中文显示问题折腾了半天,还好终于解决了,将过程记录下来。 首先要找到配置文件my.ini,在百度查了说这个文件在安装的目录,结果我的Mysql目录下并没有my.ini,只有一个my-default.ini,这个my-default.ini什么也没设定,还在注释中说不要更改它,并且说“It's a template which will be copied to the d

u012679163的博客 1571

MySQl乱码问题解决方式

MySQL 8.0版本之前,默认字符集为latin1,utf8字符集指向的是utf8mb3。网站开发人员在数据库设计的时候往往会将编码修改为utf8字符集。如果遗忘修改默认的编码,就会出现乱码的问题。从MySQL 8.0 开始,数据库的默认编码改为 utf8mb4 ,从而避免了上述的乱码问题mysql是我们项目中非常常用的数据型数据库。但是当我们需要在数据库保存中文字符,就经常会遇到数据库乱码情况。下面就来介绍一下如何彻底解决数据库中文乱码情况...

蔚蓝 6402

MySQL中文显示乱码问题解决方法

综上所述,通过配置MySQL客户端和服务器的字符集,以及正确设置数据库和表的字符集,可以解决MySQL命令行窗口中文显示乱码的问题MySQL是一款常用的关系型数据库管理系统,但在使用MySQL的命令行窗口时,有时会遇到中文显示乱码的问题。本文将介绍解决MySQL命令行窗口中文显示乱码问题的方法,并提供相应的源代码示例。在使用MySQL命令行窗口时,输入或显示中文字符可能会出现乱码,导致难以理解和操作数据库。在创建数据库和表时,可以指定字符集为utf8,以确保数据库和表的字符集与客户端一致。

SmufHtml的博客 692

blob字段怎么查看是乱码_MySQL乱码的原因和设置UTF8数据格式

MySQL使用时,有一件很痛苦的事情肯定是结果乱码。将编码格式都设置为UTF8可以解决这个问题,我们今天来说下为什么要这么设置,以及怎么设置。MySQL字符格式字符集在编程语言中,我们为了防止中文乱码,会使用unicode对中文字符做处理,而为了降低网络带宽和节省存储空间,我们使用UTF8进行编码。对这两者有什么不同不够了解的同学,可以参考Unicode字符集和UTF8编码编码的前世今生这篇文章。...

weixin_30768925的博客 1095

mysql字符编码的设置以及mysql中文乱码的解决方法

最近在开发过程中,使用到mysql的数据库,而在将中文数据插入到数据库的时候出现了数据乱码的问题,在网上找了很多方法,问了很多人,试了很久才发现网上有的方法是不行的,因此在此记录下,以便他人查找。 查看字符编码 首先,将中文插入到数据库乱码是因为没有将数据库编码设置为支持中文的编码,mysql的默认编码是Latin1,不支持中文,应该设置为utf8查看自己的数据库编码是否已设置好,进入

yipiankongbai的专栏 6万+

解决MySQL不能显示中文问题

找到MySQL根目录下的my.ini文件         找到其中参数(有两个):         default-character-set=latin1         修改为         default-character-set=utf8 然后可能还是不能显示中文,那是因为之前已经建好的数据库不可以用新的字符集了,重新建立一个数据库就可以用中文了。    如果还是不行,试试gb

Ryan的砖篮 2885

解决mysql显示中文乱码的问题

patkritLee的博客 445

MariaDB(mysql)如何解决中文显示问题

实训第二周今天我想写一些sql 语句。但是发现中文根本显示不了。原因大家都明白肯定是字符集的问题,所以我上网进行查找。说法一:更改my.cnf。my.cnf为mysql的配置文档,在这里可以将字符集的信息进行更改。                    在[client]节点下添加 default-character-set=utf8               ...

where_is_horse的博客 2195

怎么解决mysql中文显示_解决mysql 显示中文乱码问题

mysql数据库中,使用的是latin字符集,所以无法正常的支持中文字符,中文在数据库中显示为乱码“?”号。为了让mysql可以正常使用中文,尤其是当使用jsp连接mysql的时候,我们需要使用gbk的字符集,因此我们要对mysql进行以下设置,以便其有效的支持中文:1.修改my.cnf文件 my.cnf文件是mysql的配置文件,我们可以从mysql的安装目录根据其自带模板来 建立 #cp /...

weixin_29369363的博客 1003

docker跑的mysql中文显示问题解决

本人用docker跑mysql8的镜像,没有挂载`配置文件`数据卷的时候会出现中文无法在数据库中显示问题,困扰了挺久的,记录一下解决过程,一劳永逸解决中文乱码/不显示问题

m0_60394632的博客 1318

MySQL插入中文数据显示乱码问题解决

问题一:中文信息无法插入 1366 - Incorrect string value: '\xE5\x8F\xB8\xE9\xA9\xAC...' for column 'user_name' at row 1 1>进入mysql:mysql -u root -p 2>输入mysql 密码 3>显示数据库:show databases; 4>选择数据库:use 数据库名(需要修改的表名位于哪个数据库下) 5>将数据库的编码转换成: alter databas

weixin_44752664的博客 1152

mysql中只显示汉字_mysql只能显示部分中文问题 解决

我是用的phpstudy2018一键配置的mysqlmysql版本为5.5.53问题描述:show variables like "%char%";建表语句:create table student(Sno int(20),Sname char(20),Ssex char(20),Sage int(10),Sdept char(20)) character set=utf8;插入数据:insert...

weixin_33610824的博客 633

Eclipse传中文MySQL显示出现问号的问题解决方法

       今天码代码的时候没有注意到编码的问题,Eclipse上是GBK,MySQL上是utf8,后来发现在数据库中显示不了Eclipse传来的中文值,才发现这个问题。        首先,我先将Eclipse里面的编码格式都转换成了utf8,即将整个工作空间都换成utf8,每一个项目、文件也都换成utf8,发现还是没有用。后来上网搜,说是要改my.ini文件,我试了一下,依然无用。后来发现...

qq_42708662的博客 1816

MySQL乱码的几种原因

MySQL之所以会乱码,无非是以下几种原因: 1、存进数据库之前就乱码 2、在存进数据库过程中乱码 3、存进数据库后乱码 想知道在哪里出现乱码很简单,在后台打印一下就知道了。 既然知道问题出在哪里,那解决方法也很简单: 1、jsp设置编码是utf-8,保证传到后台的是utf-8的编码 2、将传到后台的请求的参数转为utf-8的编码。至于使用哪种方法,可以使用spring的拦...

anchichun6550的博客 1025

关于Docker下的MySQL启动出现unknown variable ‘collaction-server=utf8_unicode_ci‘

问题:这个MySQL校对规则不知道怎么回事配不上 以下是配置: [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] init_connect='SET collation_connection = utf8_unicode_ci' init_connect='SET NAMES utf8' character-set-server=utf8 collaction-server=utf8_uni

Antigen的博客 2594

mysql 的乱码解决方法

SETNAMES'gb2312';---ok mysql的乱码解决方法 第一个方法: MySQL4.1中文乱码的问题 最近要将MySQL4.0升级到MySQL4.1,发现了中文乱码的问题,希望以下见解对大家有用。 1.MySQL4.1在文字上有很大改进,它有了CharacterSet与Collation的慨念。 2.在...

weixin_30258901的博客 175

MYSQL使用UTF8中文乱码终极解决办法

转自:http://wenku.baidu.com/view/d2d4f15ba8114431b80dd81f.html MYSQL使用UTF8中文乱码终极解决办法   作者:刘明灵 liumingling@hotmail.com  2009.8   MYSQL乱码的问题主要有几个环节决定,一个是前端网页;二是字符传输;三是连接MYSQL;四是MYSQL的存贮方式。   MYSQL的缺省字

Gabriel的专栏 1万+

初始化mysql数据库时提示字符编码错误的解决办法

有时候在安装完数据库并初始化的时候会出现如下错误: root@localhost mysql-5.5.19]# bash scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/webserver/mysqldata/Installing MySQL system tables...1203...

weixin_30772105的博客 250
上一篇: location.reload() 和 location.replace()的区别和应用
congpu9373
博客等级 码龄10年 0粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值