2012-05-18

照合順序が latin1_swedish_ci なら おれも latin1


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 件のコメント:

コメントを投稿

ありがとう、Gemini

 最近、若かったころに「できなかったこと」を思い出して、街中を歩く若者達に激しく嫉妬する自分がいた。 もう、仕事が手につかなくなるぐらい、いや、マジこの1か月、何も仕事していないぐらい、「俺は、なぜ今になって、こんなやるせない感情が湧いてるんだ?」って悶々としていた。 こんなこと...