如上一页MySQL 4.1 之后已经增加很多编码规则,如果把 4.0.x 的数据放入 4.1 的数据库,抓出来的数据不是乱码就是一堆????问号 。
尤其在租用虚拟主机的状况下,my.ini 完全不在自己手里,
这时只要在 MySQL 联机后,加一行指定编码的指令(statment) 即可:$charset = mysql_query("SET NAMES 'utf8'", $link);,也就是PHP一般将自己的编码方式告诉Mysql Server
mysql_query("SET NAMES 'utf8'", $link); 这指令也可以省略写成 :
mysql_query("SET NAMES utf8", $link); 但第二种写法可以避免因 ` 造成的错误
<? $link_ID = mysql_connect("www.seed100.com","root","password"); //连接 Mysql Server echo "[mysql_client_encoding]\n"; //先检查现在联机 所使用的 编码 echo mysql_client_encoding($link_ID); //想知道更多......PHP 手冊 echo "\n\n"; mysql_select_db("cheese_cake",$link_ID); //指定使用cheese_cake数据库 mysql_query("SET NAMES utf8", $link_ID); //指定提取数据的排序(Collation校对)字符表 $datalist = select * from butter; //指定使用butter数据表 $result = mysql_query($datalist,$link_ID); //查询数据,将结果放入$result /****************************在租用虚拟主机的状况下,my.ini 不能自己操控,这方法很好用, 详情请看MySQL官方网站 或 上一页*********************************/
<?php
header("Content-Type: text/plain; charset=big5"); //想知道更多......PHP 手冊
echo "判別出之字元編碼:" . mb_detect_encoding("林光常にての健康餐");
?> 结果是: 判別出之字元編碼:UTF-8