2012-03-23 11 views
0

私は文字列になるPHPスクリプトを実装しました。
コンテンツタイプをtext/plainとして指定しました。PHPのテキスト/プレーンの結果+文字セット

私はPHPスクリプトをAJAXリクエストで呼びます。
jQuery関数を使用してAJAXリクエストを実行します。
その後、結果の文字列を取得し、DOMに挿入します。
私の呼び出し元のHTMLページのcontent-typeはiso-8859-1です。

しかし、結果の文字列が私の呼び出し元のHTMLページに正しく表示されません。
アクセントの鋭い文字eは特殊文字に置き換えられます。

私のPHPスクリプトの結果である文字列を暗黙的にエンコードする文字セットを知っている人はいますか?
使用する文字セットがiso-8859-1と異なる場合、結果の文字列をiso-8859-1文字セットでどのように再エンコードすることができますか?

答えて

0

デフォルトでは、AjaxリクエストはUTF-8です。

あなたのAjaxリソースはUTF-8データを発信する必要があります。ブラウザは、ISO-8859-1の場合、自動的に結果をページのローカル文字セットに変換する必要があります。

あなたのAjaxリソースがそれにUTF-8を強制する

$data = iconv($data, "ISO-8859-1", "UTF-8"); 

のようなものを使用し、ISO-8859-1データを出力している場合。 (また、同じことをやっているutf8_encode()を使用しています。)

+0

あなたはブラウザが自動的にイソするUTF-8(Ajaxの結果)から変換していること、よろしいです8859-1(HTMLページ)?最近、私はすべてのHTMLページをUTF-8形式に変更しました。なぜなら、ブラウザはこれをしないからです。このようなエンコーディングの問題を避けたかったのです(今はすべてUTF-8です)。 – martinstoeckli

+0

@Martin AFAIKページのエンコーディングが明確に定義されていると自動的に変換する必要がありますが、これを定義している正式なソースが見つかりません。 –

-1

PHPスクリプトでは、これを試してみてください:

echo htmlentities($str, ENT_QUOTES, "ISO-8859-1"); 
関連する問題