保存されたデータの文字エンコーディングがおかしい: 古いスクリプトは正しく表示されるが、新しいスクリプトは表示されない
問題:
Web サイトが不特定のデータベース エンジンから新しいスクリプトに書き換えられていますコードイグナイターを使用します。元のデータベース エンジンではペルシア語文字が正しく表示されますが、新しいスクリプトではペルシア語文字が奇妙なフォント/文字セットで表示されます。
追加の詳細:
- データベース文字セット: utf8
- データベースの照合順序: utf8_persian_ci
- Codeigniter 設定: 'char_set' = 'utf8'、'dbcollat' = 'utf8_persian_ci'
- データベースに保存されているデータは、入力すると「عمران」と表示されます。古いスクリプトを使用しますが、新しいスクリプトを使用して取得した場合の「عمراÙ」
分析:
問題は、データベース接続の設定方法にあります。古いスクリプトはペルシア語文字を正しく解釈する特定の設定を使用している可能性がありますが、新しいスクリプトはペルシア語文字が正しく表示されない別の設定を使用している可能性があります。
解決策:
-
データベース接続が正しく構成されていることを確認してください。 データベースの文字セットと照合順序が次のように設定されていることを確認してください。それぞれ「utf8」と「utf8_persian_ci」。
-
データベース内の既存のデータを変換します。 次の SQL ステートメントを使用して、latin1 (データベースが保存していると想定される文字セット) からデータを変換します。のデータ)にutf8:
-
データが変換されると、新しいスクリプトで正しく表示されるはずです。 そうでない場合は、設定とコードをさらに調査してください。新しいスクリプトが必要になる可能性があります。
以上がデータベース移行後、CodeIgniter アプリケーションでペルシア語文字が正しく表示されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。