之前搞定了这些程序,今天删除数据库后再整理一下程序,对数据库插入中文,又开始出现乱码了。1,我的<FORM>页面,在HTML内容里定义页面编码:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />2,在mysql建立数据库和表时,定义编码:
$sqlb = "create table test
(
.....
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;"; 3,连接数据库时,定义编码:
[code=PHP]
$conn=mysql_connect($host,$user,$pwd);
mysql_query("SET
character_set_connection=utf-8,
character_set_results=utf-8,
character_set_client=binary",$conn);
...
以上已经保证了数据库,页面,甚至数据库连接全部都是统一编码:UTF-8格式。可是为啥对数据库中插入中文时,还是显示乱码呢?
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />2,在mysql建立数据库和表时,定义编码:
$sqlb = "create table test
(
.....
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;"; 3,连接数据库时,定义编码:
[code=PHP]
$conn=mysql_connect($host,$user,$pwd);
mysql_query("SET
character_set_connection=utf-8,
character_set_results=utf-8,
character_set_client=binary",$conn);
...
以上已经保证了数据库,页面,甚至数据库连接全部都是统一编码:UTF-8格式。可是为啥对数据库中插入中文时,还是显示乱码呢?
mysql_query("SET
character_set_connection=utf-8,//这里的utf-8改写成utf8
character_set_results=utf-8,//同上
character_set_client=binary",$conn);
问题解决了吗?
插入到数据库中的中文是不现实乱码了。
可是在WEB段,还是乱码
给你补充一下:A,在数据库中只能使用“utf8”(MySQL)
在MySQL的命令模式中只能使用“utf8”,不能使用“utf-8”,也就是说在PHP程序中只能使用“set names utf8(不加小横杠)”,如果你加了“-”此行命令将不会生效,但是在PHP中header时却要加上“-”,因为IE不认识没杠的“utf8”,原因见下文。
PHP中的header:
<?php header('Content-Type: text/html; charset=UTF-8'); ?> //奇怪了:Content-Tyep用冒号,Chatset却是等号。
静态文件使用:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />B,在浏览器中只能使用“utf-8”(IE)
IE中如果使用了“utf8”,页面可能会 空白 或 显示为乱码。
但是在其它浏览器却是正常的,原因是因为:其它浏览器默认使用的是UTF-8的编码,如果无法识别页面的编码就会用默认的UTF-8来解码,但是IE的默认编码是GB2312,所以默认的话就。。(其它浏览器指“FireFox”、“Chrome”、“Opera”)
总结
【只有在MySQL中可以使用“utf-8”的别名“utf8”,但是在其他地方一律使用大写“UTF-8”。】
具体为:
在命令“mysql_query(set names utf8)”外一律用大写“UTF-8”。----以上内容非原创,但是很有用。建议记录