1

私の問題は次のとおりです。

「e」、「f」などのキーを持つ配列を保存します。ある時点で、キーの値を取得する必要があります。これはうまくいきます。しかし、「í」、「é」などをキーとして保存したい場合、正しい結果が得られません (結果は � になります)。私のページはUTF-8でなければなりません。問題を調べたところ、utf8_encode が問題を解決するはずであることがわかりました。そうではありませんでした。より読みやすい文字が生成されましたが、それでも私が望んでいたものとは完全に異なっていました。重要な場合、phpinfo は以下を提供します。

Directive   Local Value Master Value
iconv.input_encoding    ISO-8859-1  ISO-8859-1
iconv.internal_encoding ISO-8859-1  ISO-8859-1
iconv.output_encoding   ISO-8859-1  ISO-8859-1

何が問題を解決できますか?

編集:配列キーによってデータが失われると思います。本当ですか?はいの場合、どのように防ぐのですか?

Edit2:これまでに試した解決策:配列キーの値を取得する - 失敗しました。キーは同じですが、値は utf-8 文字の配列を作成してください: 失敗しました。utf8_encode が失敗しました。[両方で試した] iconv_set_encoding: 失敗しました。ini_set が失敗しました。mb_internal_encoding が失敗しました。すべて Ã または é で返されます。

4

3 に答える 3

1

私はいくつかの解決策をまとめましたが、最終的には機能します。

私がやったことは次のとおりです。まず、次の行を追加してすべてのソリューションをまとめました。

ini_set('default_charset', 'UTF-8');
iconv_set_encoding("input_encoding", "UTF-8");
iconv_set_encoding("internal_encoding", "UTF-8");
iconv_set_encoding("output_encoding", "UTF-8");
mb_internal_encoding("UTF-8");

これはうまくいきませんでした。

すべてのリンクを調べましたが、utf8_encode - utf8_decode メソッドが機能しませんでした。次に、関数を調べたところ、mbstring が見つかったので、すべての文字列関数を対応するmbstringに置き換えました。

これはうまくいきました。そしたら、これmb_internal_encoding("UTF-8");で十分だということがわかりました。だから今それは動作します。すべての提案をありがとう!

于 2012-02-12T09:46:21.543 に答える
0

default_charsetディレクティブを設定してみてください。

ini_set('default_charset', 'UTF-8');

これにより、ブラウザに送信される文字エンコードがContent-Typeヘッダーに設定されます。

于 2012-02-11T21:30:15.427 に答える
0

UTF-8 データを処理する必要があるすべてのスクリプトの先頭に、次の行を追加してみてください。

mb_internal_encoding("UTF-8");

またはさらに良いことに、php.ini ファイルの内部エンコーディングを編集します。

于 2012-02-11T16:20:13.550 に答える