2010年7月20日火曜日

PHP + MySQLでの文字化け

解決案その2

データベースに接続した後に
@mysql_set_charset(‘utf8′);
と書く。

<?php
$dsn = "mysql:host=localhost;dbname=データベース名";
if(!$db = new PDO($dsn, "ユーザー名", "パスワード"))
    echo 'connnect error!<br>';
else
    echo 'connnect succes!<br>';
@mysql_set_charset(‘utf8′);
?>

みたい感じ。
はじめは
$db->query("SET NAMES 'UTF8'");
でやってたけど駄目だった。
これでとりあえずは文字化けしなくなった。

でも実は

Warning: mysql_set_charset() [function.mysql-set-charset]: Access denied for user 'username'@'localhost' (using password: NO) in /ディレクトリがつらつらと/db_init.php on line 7

Warning: mysql_set_charset() [function.mysql-set-charset]: A link to the server could not be established in /ディレクトリがつらつらと/db_init.php on line 7

というエラーが出る。
動くんだけどエラー出る。
使わない方がいいよね。
どうしても、という人のみ自己責任でどうぞ。

下記の参考サイトではエラー出てないみたいなんだけどなぁ。
PDOでDBにアクセスしてるからエラー出るんだろうね。
$db->query();
でUTF-8指定できるのあればそれでいけるのかな?

参考サイト
CORE SERVERでMySQLの文字化け

0 件のコメント:

コメントを投稿