ホームページ > バックエンド開発 > PHPチュートリアル > 新しい CodeIgniter スクリプトでは破損したペルシア語文字が表示されるのに、古いスクリプトでは表示されないのはなぜですか?

新しい CodeIgniter スクリプトでは破損したペルシア語文字が表示されるのに、古いスクリプトでは表示されないのはなぜですか?

Susan Sarandon
リリース: 2024-12-27 05:30:15
オリジナル
181 人が閲覧しました

Why Does My New CodeIgniter Script Display Corrupted Persian Characters While the Old Script Doesn't?

データベース内の奇妙な文字エンコーディング: 古いスクリプトのデコード、新しいスクリプトの失敗

問題ステートメント:

古いスクリプトから新しい CodeIgniter ベースのスクリプトへの Web サイト移行で問題が発生する文字エンコーディング付き。古いスクリプトではデータベースに保存されているペルシア語文字が表示されますが、新しいスクリプトでは破損したテキストが表示されます。

分析:

データベースのテーブルと列は照合順序で構成されています。 utf8_persian_ci の。新しいスクリプトでは、文字セットと照合として UTF-8 も使用されます。この問題は、古い TubaDBEngine を使用する際の文字の元々のデータベースへの保存方法に起因します。

古いスクリプトの動作:

ペルシア語文字がスクリプトに挿入されたときTubaDBEngine を使用してデータベースに保存すると、UTF-8 ではなく別のエンコーディングで保存され、次のような文字が表示されます。データベース内の「عمران」。ただし、古いスクリプトはこれらの文字を正しくデコードして表示できました。

新しいスクリプトの問題:

新しいスクリプトは、UTF-8 用に正しく構成されていますが、 TubaDBEngine のエンコーディングを使用して、データベースに元々格納されていた文字をデコードします。その結果、新しいスクリプトはデータを取得するときに破損したテキストを表示します。

解決策:

  1. 次のようなクエリ:
SELECT CONVERT(BINARY CONVERT(fName USING latin1) USING utf8) FROM tnewsgroups
ログイン後にコピー
  1. データベース内のデータを更新します。 UPDATE ステートメントを使用:
UPDATE tnewsgroups SET fName = CONVERT(BINARY CONVERT(fName USING latin1) USING utf8)
ログイン後にコピー

データ変換後、新しいスクリプトはペルシア語文字を正しく取得して表示できるようになります。

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

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