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

コメントを投稿

綺麗に見せることに全振りした操法大会の訓練を50日間するよりも、月1回でいいから基本的な操作方法の訓練を実施すべきだと思うのは俺だけか

 7月に県の消防操法大会がある。 市内分団の持ち回り制で、今年はうちの分団が出場する。 俺も前回回ってきたときに、選手として出た。 訓練が5月から始まっている。 週5日。 訓練時間は2時間だけど、その前に準備する時間もあり、訓練後の撤収時間も必要だから、拘束時間は約3時間。 俺が...