ホームページ > データベース > mysql チュートリアル > 古い W​​eb サイト スクリプトと新しい Web サイト スクリプトでペルシア語文字の表示が異なるのはなぜですか?

古い W​​eb サイト スクリプトと新しい Web サイト スクリプトでペルシア語文字の表示が異なるのはなぜですか?

Susan Sarandon
リリース: 2024-12-26 11:46:10
オリジナル
246 人が閲覧しました

Why Do My Persian Characters Display Differently Between Old and New Website Scripts?

データの保存と取得における文字エンコーディングの不一致

ペルシャ文字を使用する古い Web サイトを書き換えようとして、次のような問題に直面しました。データの保存方法と取得方法の間に奇妙な矛盾があること。古いスクリプトではペルシア語文字が正しく表示されますが、新しいスクリプトではデータベースと同じエンコーディングで表示されるため、歪んで見えます。

この問題を理解するには、次の点に注意することが重要です。

  • 古いスクリプトは、文字エンコーディングに独自のメカニズムを採用する TUBADBENGINE に依存しています。
  • 新しいスクリプトは CodeIgniter を利用します。文字エンコードの処理方法が異なります。
  • データベースは、UTF-8 文字セットと utf8_persian_ci 照合順序で構成されています。

古いスクリプトを使用してペルシア語文字を入力すると、次のように表示されます。データベース内に عمران のような奇妙なシーケンスがあります。ただし、古いスクリプトはそれらを正しく取得して表示します。これは、TUBADBENGINE が、おそらく ISO-8859-1 に基づいた別のエンコード スキームを採用していることを示唆していますが、このスキームは新しいスクリプトでは認識されません。

逆に、ペルシア語文字をデータベースに直接挿入すると、ペルシア語文字は保存されます。期待どおり、新しいスクリプトによって正しく取得されます。ただし、古いスクリプトでは疑問符 (????) として表示されます。これは、古いスクリプトの文字デコード メカニズムでは、データベースで直接挿入に使用されているエンコーディングとは異なるエンコーディングが想定されているためです。

解決策は、データベース内の既存のデータを TUBADBENGINE で使用されているエンコーディングから UTF に変換することです。 CodeIgniter で予期される -8 エンコード。これを実現するには:

  1. データベース接続を調整して、UTF-8 エンコーディングが使用されるようにします。
  2. CONVERT 関数を使用して、影響を受ける列のデータを変換します。例:
UPDATE tnewsgroups SET fName = CONVERT(INARY CONVERT(fName USING latin1) USING utf8);
ログイン後にコピー

データが変換されると、新しいスクリプトと古いスクリプトの両方でペルシア語文字が正しく表示されるはずです。

以上が古い W​​eb サイト スクリプトと新しい Web サイト スクリプトでペルシア語文字の表示が異なるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート