﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-ln_ydc</title><link>http://www.blogjava.net/011101110111/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 03:24:55 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 03:24:55 GMT</pubDate><ttl>60</ttl><item><title>mysql乱码问题</title><link>http://www.blogjava.net/011101110111/archive/2010/08/31/330418.html</link><dc:creator>ln_ydc</dc:creator><author>ln_ydc</author><pubDate>Tue, 31 Aug 2010 05:34:00 GMT</pubDate><guid>http://www.blogjava.net/011101110111/archive/2010/08/31/330418.html</guid><wfw:comment>http://www.blogjava.net/011101110111/comments/330418.html</wfw:comment><comments>http://www.blogjava.net/011101110111/archive/2010/08/31/330418.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/011101110111/comments/commentRss/330418.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/011101110111/services/trackbacks/330418.html</trackback:ping><description><![CDATA[show variables like 'character%';查看字符编码 <br />
<br />
--更改字符集 <br />
SET character_set_client = utf-8 ; <br />
SET character_set_connection = utf-8 ; <br />
SET character_set_database = utf-8 ; <br />
SET character_set_results = utf-8 ; <br />
SET character_set_server = utf-8 ; <br />
<br />
<br />
SET collation_connection = utf8 ; <br />
SET collation_database = utf8 ; <br />
SET collation_server = utf8 ; <br />
<br />
<br />
MySQL的字符集支持(Character Set Support)有两个方面：字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 服务器(server)，数据库(database)，数据表(table)和连接(connection)。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.MySQL默认字符集:MySQL对于字符集的指定可以细化到一个数据库，一张表，一列.传统的程序在创建数据库和数据表时并没有使用那么复杂的配置，它们用的是默认的配置.&nbsp;&nbsp;&nbsp; (1)编译MySQL 时，指定了一个默认的字符集，这个字符集是 latin1；(2)安装MySQL 时，可以在配置文件 (my.ini) 中指定一个默认的的字符集，如果没指定，这个值继承自编译时指定的；(3)启动mysqld 时，可以在命令行参数中指定一个默认的的字符集，如果没指定，这个值继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集；(4)当创建一个新的数据库时，除非明确指定，这个数据库的字符集被缺省设定为character_set_server；(5)当选定了一个数据库时，character_set_database 被设定为这个数据库默认的字符集；(6)在这个数据库里创建一张表时，表默认的字符集被设定为 character_set_database，也就是这个数据库默认的字符集；(7)当在表内设置一栏时，除非明确指定，否则此栏缺省的字符集就是表默认的字符集；如果什么地方都不修改，那么所有的数据库的所有表的所有栏位的都用 latin1 存储，不过我们如果安装 MySQL，一般都会选择多语言支持，也就是说，安装程序会自动在配置文件中把 default_character_set 设置为 UTF-8，这保证了缺省情况下，所有的数据库的所有表的所有栏位的都用 UTF-8 存储。 <br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.查看默认字符集(默认情况下，mysql的字符集是latin1(ISO_8859_1)通常，查看系统的字符集和排序方式的设定可以通过下面的两条命令： <br />
&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; SHOW VARIABLES LIKE 'character%'; <br />
+--------------------------+---------------------------------+ <br />
| Variable_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <br />
+--------------------------+---------------------------------+ <br />
| character_set_client&nbsp;&nbsp;&nbsp;&nbsp; | latin1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <br />
| character_set_connection | latin1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <br />
| character_set_database&nbsp;&nbsp; | latin1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <br />
| character_set_filesystem | binary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <br />
| character_set_results&nbsp;&nbsp;&nbsp; | latin1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <br />
| character_set_server&nbsp;&nbsp;&nbsp;&nbsp; | latin1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <br />
| character_set_system&nbsp;&nbsp;&nbsp;&nbsp; | utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <br />
| character_sets_dir&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | D:"mysql-5.0.37"share"charsets" | <br />
+--------------------------+---------------------------------+ <br />
<br />
mysql&gt; SHOW VARIABLES LIKE 'collation_%'; <br />
+----------------------+-----------------+ <br />
| Variable_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <br />
+----------------------+-----------------+ <br />
| collation_connection | utf8_general_ci | <br />
| collation_database&nbsp;&nbsp; | utf8_general_ci | <br />
| collation_server&nbsp;&nbsp;&nbsp;&nbsp; | utf8_general_ci | <br />
+----------------------+-----------------+ <br />
<br />
3.修改默认字符集 <br />
(1) 最简单的修改方法，就是修改mysql的my.ini文件中的字符集键值， <br />
如&nbsp;&nbsp;&nbsp; default-character-set = utf8 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; character_set_server = utf8 <br />
&nbsp;&nbsp; 修改完后，重启mysql的服务，service mysql restart <br />
&nbsp;&nbsp; 使用 mysql&gt; SHOW VARIABLES LIKE 'character%';查看，发现数据库编码均已改成utf8 <br />
+--------------------------+---------------------------------+ <br />
| Variable_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <br />
+--------------------------+---------------------------------+ <br />
| character_set_client&nbsp;&nbsp;&nbsp;&nbsp; | utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <br />
| character_set_connection | utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <br />
| character_set_database&nbsp;&nbsp; | utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <br />
| character_set_filesystem | binary&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <br />
| character_set_results&nbsp;&nbsp;&nbsp; | utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <br />
| character_set_server&nbsp;&nbsp;&nbsp;&nbsp; | utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <br />
| character_set_system&nbsp;&nbsp;&nbsp;&nbsp; | utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <br />
| character_sets_dir&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | D:"mysql-5.0.37"share"charsets" | <br />
+--------------------------+---------------------------------+ <br />
<br />
&nbsp;&nbsp; (2) 还有一种修改字符集的方法，就是使用mysql的命令 <br />
&nbsp;&nbsp;&nbsp;&nbsp; SET character_set_client = utf8 ; <br />
&nbsp;&nbsp;&nbsp;&nbsp; SET character_set_connection = utf8 ; <br />
&nbsp;&nbsp;&nbsp;&nbsp; SET character_set_database = utf8 ; <br />
&nbsp;&nbsp;&nbsp;&nbsp; SET character_set_results = utf8 ; <br />
&nbsp;&nbsp;&nbsp;&nbsp; SET character_set_server = utf8 ; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; SET collation_connection = utf8 ; <br />
&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; SET collation_database = utf8 ; <br />
&nbsp;&nbsp;&nbsp;&nbsp; mysql&gt; SET collation_server = utf8 ; <br />
<br />
一般就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询，你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句： <br />
SET NAMES 'utf8'; <br />
<br />
它相当于下面的三句指令： <br />
SET character_set_client = utf8; <br />
SET character_set_results = utf8; <br />
SET character_set_connection = utf8; <br />
<br />
不知道什么原因,我在自己机器上把上述三个字符集都设置成utf8后,查询中文结果还是乱码,只有把character_set_results设置成GBK之后才能从命令行正常显示中文. <br />
set character_set_results=GBK; <br />
<img src ="http://www.blogjava.net/011101110111/aggbug/330418.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/011101110111/" target="_blank">ln_ydc</a> 2010-08-31 13:34 <a href="http://www.blogjava.net/011101110111/archive/2010/08/31/330418.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>