1

これは何年にもわたって私を悩ませてきました。私はこれを完全に解決したいと思っています。ISO-8859-1 文字を使用して定義したフィールドの連想配列があります。例えば:

array("utført" => "red");

ファイルからロードした別の配列もあります。この配列をブラウザーに出力し、Æ、Ø、Å などの値が損なわれていないことを確認しました。これらの配列の 2 つのフィールドを比較しようとすると、次のメッセージが表示されます。

未定義のインデックス: 39 行目の utfã¸rt

思わずすすり泣く。いまいましいたびに、スクリプトに UTF-8 以外の文字を含めますが、それらはある時点でã¸rナンセンスまたは同様のナンセンスに変換されます。

スクリプト ファイルは ISO-8859-1 でエンコードされています。データの読み込み元のドキュメントは同じであり、データを保存しようとしている MySQL テーブルも同じです。

したがって、私が引き出せる唯一の結論は、PHP はそのコードに文字セットをまったく受け入れていないということです。PHP にノルウェー語を話すよう強制する必要があります。

提案をありがとう

参考までに、「それらの文字を使用しないでください」または「ファイルの読み込み時にそれらの文字をUTFに相当するものに置き換えるだけです」またはその他のハックソリューションの行での回答は受け入れません

4

1 に答える 1

1

外部ファイルからデータを読み取るときは、適切なエンコーディングに変換してみてください。

このようなことが頭に浮かびます...

  $f = file_get_contents('externaldata.txt');
  $f = mb_convert_encoding($f, 'iso-8859-1');
  // from this point deal with $f whatever you want

また、詳細についてはmb_convert_encoding()マニュアルを参照してください。

于 2011-04-18T03:54:10.753 に答える