数据库编码问题导致写入数据乱码及修改编码的操作

[mysql] 2024-03-29 圈点609

摘要:数据库编码问题导致写入数据乱码和三个参数有很大的关系,修改编码的操作有对库,表,字段的修改。

在连接数据库之后,读取数据之前,先执行一项查询“SET NAMES UTF8”,

即在PHP里为mysql_query("SET NAMES UTF8");   
//该句话一定要放在数据库服务器连接语句【$connection=mysql_connect($db_host,$db_user,$db_psw)or die("连接服务器失败");】之后,即可显示正常(只要数据库里信息的字符正常)。


检测发现在MySQL命令行输入“SET NAMES UTF8;”,然后执行“show variebles like“character_set_%”;”,发现原来为latin1的那些变量“character_set_client”、“character_set_connection”、“character_set_results”的值全部变为utf8了,原来是这3个变量在捣蛋。
查阅手册,上面那句语句的效果相当于等于:
SET character_set_client = utf8;      
SET character_set_results = utf8;     
SET character_set_connection = utf8;


数据库中的编码问题和这三个参数有很大关系。


有2种写法示例如下:

SET NAMES 'utf8';UPDATE `[players]` SET name =  '你好' WHERE id =1

@mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary", $this->link);




同时介绍一下修改编码的几个操作:

1.修改数据库编码

如果是数据库编码不正确,可以在phpmyadmin 执行如下命令:

ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
以上命令就是将test数据库的编码设为utf8


2.修改表的编码:

ALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
以上命令就是将一个表category的编码改为utf8


3.修改字段的编码:
ALTER TABLE `test` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL

以上命令就是将test表中 dd的字段编码改为utf8



编码  乱码  mysql  修改编码  

感谢反馈,已提交成功,审核后即会显示

上一篇[mysql]

下一篇[mysql]lnnodb数据库问题集合