開発者が古い Web サイトをペルシア語で書き直しているときに、奇妙な問題に遭遇しました。ペルソ/アラビア文字を使用します。この問題には、データベースへのデータの保存およびデータベースからのデータの取得時の文字エンコーディングの不一致が関係していました。
以前のスクリプトでは、TUBADBENGINE というデータベース エンジンを使用して、保存されたデータを管理していました。文字コードは「utf8_persian_ci」です。 Codeigniter でコーディングされた新しいスクリプトには、文字セットと照合順序の設定として「utf8」と「utf8_persian_ci」も含まれていました。
ただし、データベースにペルシア語文字を入力すると、古いスクリプトでは、新しいスクリプトでは異なる表示がされました。古いスクリプトでは文字が意図したとおりに正しく表示されていましたが、新しいスクリプトでは奇妙な表現が行われました。
さらに詳しく調べると、データベースに保存されているデータが誤った形式であることが判明しました。ペルシア語文字「aaaaaa」を挿入すると、「عمراÙ」が保存されます。
新しいスクリプトでこのデータを取得すると、「عمراÙ」と表示されました。ただし、古いスクリプトでは依然として「aaaaaa」と正しく表示されていました。
さらなる分析の結果、問題の根本が発見されました。古いスクリプトで使用されていたデータベース接続が誤っていたということです。データベースとテーブルが utf8_persian_ci で構成されているにもかかわらず、latin1 文字エンコーディングを使用するように設定されています。
この結果、次のようになります。プロセス:
この問題を解決するには、データベース内のデータを正しい文字エンコーディングに変換する必要がありました。この変換には次のクエリが使用されました:
SELECT CONVERT(BINARY CONVERT(field_name USING latin1) USING utf8) FROM table_name
データの変換後、新しいスクリプトはペルシア語文字を正しく表示できました。
以上がUTF-8 エンコーディングを使用しているにもかかわらず、新しい Codeigniter Web サイトでペルシア語文字が正しく表示されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。