[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]lnnodb数据库问题集合