データの保存と取得における文字エンコーディングの不一致
ペルシャ文字を使用する古い Web サイトを書き換えようとして、次のような問題に直面しました。データの保存方法と取得方法の間に奇妙な矛盾があること。古いスクリプトではペルシア語文字が正しく表示されますが、新しいスクリプトではデータベースと同じエンコーディングで表示されるため、歪んで見えます。
この問題を理解するには、次の点に注意することが重要です。
古いスクリプトを使用してペルシア語文字を入力すると、次のように表示されます。データベース内に عمران のような奇妙なシーケンスがあります。ただし、古いスクリプトはそれらを正しく取得して表示します。これは、TUBADBENGINE が、おそらく ISO-8859-1 に基づいた別のエンコード スキームを採用していることを示唆していますが、このスキームは新しいスクリプトでは認識されません。
逆に、ペルシア語文字をデータベースに直接挿入すると、ペルシア語文字は保存されます。期待どおり、新しいスクリプトによって正しく取得されます。ただし、古いスクリプトでは疑問符 (????) として表示されます。これは、古いスクリプトの文字デコード メカニズムでは、データベースで直接挿入に使用されているエンコーディングとは異なるエンコーディングが想定されているためです。
解決策は、データベース内の既存のデータを TUBADBENGINE で使用されているエンコーディングから UTF に変換することです。 CodeIgniter で予期される -8 エンコード。これを実現するには:
UPDATE tnewsgroups SET fName = CONVERT(INARY CONVERT(fName USING latin1) USING utf8);
データが変換されると、新しいスクリプトと古いスクリプトの両方でペルシア語文字が正しく表示されるはずです。
以上が古い Web サイト スクリプトと新しい Web サイト スクリプトでペルシア語文字の表示が異なるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。