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

コメントを投稿

.htaccessで403を404で返す

久しぶりにリライトルールを書いたよ。 ドキュメントルートに.htaccessを置く場合の記述↓ # 403.html は実体がなくてよい。この設定をすることで、あっても使われなくなる。 ErrorDocument 403 /403.html # 独自の404ページをドキュメ...