0

私のサイトには mysql データベースからの日本語があります。

サイト上の他の日本語テキストは正常に表示されますが、データベースから出力されるものは次のようになります。

 ????????

データベースは UTF8 に設定されており、Web ページも同様です。

問題を解決するには、使用するデータベースを呼び出す前に:

$db->query("SET NAMES utf8");

すべてのクエリの前に名前を設定することなく、上記を行うためのより良い/より簡単な方法があるかどうか疑問に思っていましたか?

4

1 に答える 1

1

すべてのクエリの前に使用する必要はありませんSET NAMES utf8。接続が確立されたら実行するだけです。PDO の例を次に示します。

try {
    $dns  = "mysql:host={HOST};dbname={DB}";
    $user = "{USER}";
    $pass = "{PASS}";
    $con = new PDO($dns, $user, $pass);
} catch ( Exception $e ) {
    echo "Connexion error ", $e->getMessage();
    die();
}

$con->query("SET NAMES utf8;");
//and now, as many queries as you want

PHP >= 5.3.6 を使用している場合は、接続文字列で文字セットを定義できます (以前の PHP バージョンでは無視されます)。

try {
    $dns  = "mysql:host={HOST};dbname={DB};charset=utf8";
    $user = "{USER}";
    $pass = "{PASS}";
    $con = new PDO($dns, $user, $pass);
} catch ( Exception $e ) {
    echo "Connexion error ", $e->getMessage();
    die();
}

//and now, as many queries as you want
于 2013-03-13T15:27:27.860 に答える