MySQL 5.1 Reference Manual :: 10 Character Set Support :: 10.4 Connection Character Sets and Collations
  • MySQL 5.1 Reference Manual

  • 10 Character Set Support
  • 10.1 Character Sets and Collations in General
  • 10.2 Character Sets and Collations in MySQL
  • 10.3 Specifying Character Sets and Collations
  • 10.4 Connection Character Sets and Collations
  • 10.5 Collation Issues
  • 10.6 Operations Affected by Character Set Support
  • 10.7 Unicode Support
  • 10.8 UTF-8 for Metadata
  • 10.9 Character Sets and Collations That MySQL Supports


一堆????问号    MySQL中文乱码

如上一页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

 





real_vine@hotmail.com