加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MYSQL教程MySQL的中文UTF8乱码问题

发布时间:2020-12-26 17:24:08 所属栏目:MySql教程 来源:网络整理
导读:副标题#e# 《MYSQL教程MySQL的中文UTF8乱码问题》要点: 本文介绍了MYSQL教程MySQL的中文UTF8乱码问题,希望对您有用。如果有疑问,可以联系我们。 从MySQL支持Unicode后,为了与时俱进,我们的web程序也开始考虑用UTF8了.其实UTF8也用了好几年了,程序基本能

mysql> SHOW VARIABLES LIKE 'character%';MYSQL必读

+----------------------------------------+-------------------------MYSQL必读

| Variable_name??????????? | ValueMYSQL必读

+----------------------------------------+-------------------------MYSQL必读

| character_set_client???????| latin1MYSQL必读

| character_set_connection ??| latin1MYSQL必读

| character_set_database????| utf8MYSQL必读

| character_set_filesystem ???| binaryMYSQL必读

| character_set_results??? ???| latin1MYSQL必读

| character_set_server???? ??| utf8MYSQL必读

| character_set_system??? ??| utf8MYSQL必读

| character_sets_dir?????? ??| D:mysqlsharecharsetsMYSQL必读

+----------------------------------------+-------------------------MYSQL必读

8 rows in set (0.00 sec)MYSQL必读

?MYSQL必读

mysql> SHOW VARIABLES LIKE 'collation_%';MYSQL必读

+---------------------------------------+------------------MYSQL必读

| Variable_name????? ?????| Value??????????? MYSQL必读

+---------------------------------------+------------------MYSQL必读

| collation_connection ????| latin1_swedish_ciMYSQL必读

| collation_database?? ????| utf8_general_ci?MYSQL必读

| collation_server???? ????| utf8_general_ci?MYSQL必读

+--------------------------------------+------------------MYSQL必读

3 rows in set (0.00 sec)MYSQL必读

发现Value列里面不全是utf8,仍然有部分是latin1,比如其中的client和connection.那网页xxx.php的工作过程就是这样的啦:从xxx.php页面上输入汉字,因为xxx.php是UTF8编码的,所以xxx.php以UTF8格式转换输入的汉字,然后以UTF8提交给mysql,但是mysql的client和connection都是latin1的,而表是UTF8的,所以mysql存储时,先将xxx.php提交的汉字,转成latin1的格式,再转成UTF8字符格式存在表中.如果此时我们用第三方软件或者phpMyAdmin去select查看此表,而表中存储的数据是被latin1过的UTF8字符,出来的时候是以UTF8格式取的,当然看起来时乱码了.解决方法就是让所有过程都是UTF8的就可以了.MYSQL必读

【解决问题】MYSQL必读

1、从my.ini下手MYSQL必读

[client]MYSQL必读

default-character-set=utf8MYSQL必读

[mysql]MYSQL必读

default-character-set=utf8MYSQL必读

[mysqld]MYSQL必读

default-character-set=utf8MYSQL必读

以上3个section都要加default-character-set=utf8,平时我们可能只加了mysqld一项.MYSQL必读

然后重启mysql,执行MYSQL必读

mysql> SHOW VARIABLES LIKE 'character%';MYSQL必读

mysql> SHOW VARIABLES LIKE 'collation_%';MYSQL必读

确保所有的Value项都是utf8即可.MYSQL必读

2、建表时加utf8,表字段的Collation可加可不加,不加时默认是utf8_general_ci了.MYSQL必读

CREATE TABLE `tablename4` (MYSQL必读

`id` int(11) NOT NULL AUTO_INCREMENT,MYSQL必读

`varchar1` varchar(255) DEFAULT NULL,MYSQL必读

`varbinary1` varbinary(255) DEFAULT NULL,MYSQL必读

PRIMARY KEY (`id`)MYSQL必读

) ?ENGINE=MyISAM ?DEFAULT CHARSET=utf8 MYSQL必读

?MYSQL必读

3、网页xxx.php保存时选择utf8编码,页头最好加上MYSQL必读

header('conten-type:text/html;charset=utf-8');MYSQL必读

在执行CRUD操作前先执行一下MYSQL必读

mysql_query("set names utf8");MYSQL必读

测试代码xxx.php如下:MYSQL必读

<?phpMYSQL必读

header('conten-type:text/html;charset=utf-8');MYSQL必读

mysql_connect("localhost","root","password") or die("Could not connect: " . mysql_error());MYSQL必读

mysql_select_db("test");MYSQL必读

mysql_query("set names utf8");MYSQL必读

$str = "CHN 软件开发有限公司,JPN ソフトウェア_k株式会社,KOR ????? ?? ?? ??,RUS Суд программного обеспечения".time();MYSQL必读

$sql = "insert into tablename4 (varchar1,varbinary1 ) values ('".$str."','".$str."')";MYSQL必读

echo $sql."<hr>";MYSQL必读

mysql_query($sql);MYSQL必读

?MYSQL必读

$result = mysql_query("SELECT id,varchar1,varbinary1 FROM tablename4");MYSQL必读

while ($row = mysql_fetch_array($result,MYSQL_BOTH)) {MYSQL必读

printf ("ID: %s,varchar1: %s,varbinary1: %s<br>",$row[0],$row["varchar1"],$row["varbinary1"]);MYSQL必读

}MYSQL必读

?MYSQL必读

mysql_free_result($result);MYSQL必读

?>MYSQL必读

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

副标题[/!--empirenews.page--]

《MYSQL教程MySQL的中文UTF8乱码问题》要点:
本文介绍了MYSQL教程MySQL的中文UTF8乱码问题,希望对您有用。如果有疑问,可以联系我们。

从MySQL支持Unicode后,为了与时俱进,我们的web程序也开始考虑用UTF8了.其实UTF8也用了好几年了,程序基本能跑,没什么大问题,但是数据倒换的时候,总是遇到不爽的事情.MYSQL必读

【问题现象】MYSQL必读

网页xxx.php用EditPlus另存为UTF8格式,MySQL在my.ini里设置default-character-set=utf8,建表时加了CREATE TABLE `xxx ` (myname varchar(255)) ENGINE=MyISAM DEFAULT CHARSET=utf8,用xxx.php执行insert/update/select出来的都是中文,貌似没问题,但是用phpMyAdmin看select是乱码,用第三方工具软件(如SQLyog)看select也是乱码,mysqldump也是乱码,很不爽.当然,如果你建表的时候,选择了binary/varbinary/blob类型,不会发现乱码,因为指定的是二进制保存,MySQL保存数据时就没有编码的概念了.MYSQL必读

【查找问题】MYSQL必读

虽然在my.ini里设置default-character-set=utf8,但是执行以下命令时有新发现:MYSQL必读

热点阅读