之前搞定了这些程序,今天删除数据库后再整理一下程序,对数据库插入中文,又开始出现乱码了。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格式。可是为啥对数据库中插入中文时,还是显示乱码呢?

解决方案 »

  1.   

    $conn=mysql_connect($host,$user,$pwd);
    mysql_query("SET
           character_set_connection=utf-8,//这里的utf-8改写成utf8
           character_set_results=utf-8,//同上
           character_set_client=binary",$conn);
    问题解决了吗?
      

  2.   


    插入到数据库中的中文是不现实乱码了。
    可是在WEB段,还是乱码
      

  3.   

    百度了一段: 结论:【只有在MySQL中可以使用“utf-8”的别名“utf8”,但是在其他地方一律使用大写“UTF-8”。】
      

  4.   


    给你补充一下: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”。----以上内容非原创,但是很有用。建议记录