PHPが記述されたファイルのエンコード:EUC-JP (CP51932)
MySQLのフィールドの照合順序:latin1_swedish_ci
<?
header("Content-Type: text/html; charset=EUC-JP");
$link = mysql_connect("localhost", "hoge", "hoge");
mysql_select_db("hoge", $link);
mysql_set_charset("latin1", $link);
mysql_query("INSERT INTO `tbl` (`value`) VALUES ('あ')", $link);
$query = mysql_query("SELECT `value` FROM `tbl`", $link);
$row = mysql_fetch_array($query, MYSQL_ASSOC);
echo $row["value"];
mysql_free_result($query);
mysql_close($link);
?>
クライアント側(PHP)が EUC-JP だからといって
mysql_set_charset("ujis", $link);
とすると、MySQLが ujis (EUC-JP) から latin1 へ変換するので文字化けする。
そりゃね、latin1の文字セットに日本語の「あ」なんてないさ。
だから、クライアント側(PHP)も「latin1だよー」って言ってあげると、MySQLは変換しないので文字化けしない。
ということで、このサンプルの出力(echo $row["value"])の結果は
あ
となる。
0 件のコメント:
コメントを投稿