ただのメモ帳

記録を残していきます

広告

MySQLの文字化け対策メモ

問題
クライアントとサーバーの両方の文字コードを統一したはずなのに、PHPからデータベースの中身を取り出すと文字化けして「?」」になる。

原因
ネットで調べてみたら、両方の文字コードを揃えていても、PHPのビルド時に設定された文字コードが適用されてしまう場合があるらしい。デフォルトだとlatin1(欧文フォント)みたい。

対策
PHPからデータベースに接続したときに、文字コードの設定をしてあげる。MySQLの設定ファイルをいじる方法もあるらしいんですが、レンタルサーバーだとできないので
結局どうすればいいかというと、データベースに接続した時に

mysql_set_charset(“utf8″ , $db);

を書いて文字コードを指定してあげると文字化けしなくなりました。(これはutf8の場合)

<?php
$db=mysql_connect(“データベース”,”ユーザーネーム”,”パスワード”);
mysql_set_charset(“utf8″ , $db);
?>

こんな感じです。

「set names」を使う方法も見かけましたが、これだとセキュリティーに問題があるらしいです。

広告

Written by ant

2月 23rd, 2010 at 10:42 pm

Posted in php

コメントする