1

MySQL 5.0にテーブルがあり、ペルシア語で都市名を入力し、ページを使用して特定の都市名を読み取ろうとしています。以前は言葉でしたが、今日から突然、私のページの都市名はすべて「?????」になりました。お気に入り!phpMyAdminに移動し、すべての照合設定を「utf_persian_ci」に変更しても何も起こりません。興味深いのは、phpMyAdminの[参照]オプションですべてが正常に表示されることです(すべての都市名は正常です!)が、ページからこの種のクエリを使用して取得しようとすると、次のことが起こります。

$result = dbquery("SELECT * FROM ".DB_CITIES." WHERE cty_company_id = ".$_GET['cmp']." AND EXISTS (SELECT cu_cmp_id FROM ".DB_COMPANY_USERS." WHERE cu_cmp_id = ".$_GET['cmp']." AND cu_usr_id = $user_id) AND EXISTS (SELECT ctus_user_id FROM scada_city_users WHERE ctus_user_id = $user_id AND ctus_city_id = cty_id)");

前もって感謝します!

4

1 に答える 1

2

UTF-8でエンコードされた文字列を配信する必要があることをデータベースに通知する簡単な方法があります。接続オブジェクトに、どの文字セットを期待するかを伝えるだけで、データベースが残りの作業を行います。

$db = new mysqli($dbHost, $dbUser, $dbPw, $dbName);

// tell the db to deliver UTF-8 encoded strings.
$db->set_charset("utf8");

照合は、2つのエントリを比較する方法を定義するだけであり、文字セットを定義することと同じではありません。HTMLページもUTF-8でエンコードされている必要があります。詳細については、こちらをご覧ください

于 2012-06-30T22:17:46.597 に答える