2010-12-13 4 views
1

私はphpページを呼び出すjavascriptスクリプトを用意しています。提案はPHPのページでうまく返されますが、なんらかの理由で、HTMLページの要素としてjavascriptオブジェクトリクエストのresponsetextを設定すると、すべての特殊文字(つまり、áまたはã)がこの疑問符として表示されます。要求が正しく読み込まれていることを確認するために、要求の応答テキストで関数IIを実行する必要がありますか?javascript変数の特殊文字はasとして表示され続けますが、どうすればこれを防ぐことができますか?

ありがとうございました。

答えて

0

私はあなたのPHPスクリプトで、すべてをHTMLエンティティとしてエンコードしようとします。

これは簡単にJavaScriptに結果を返す前に、このような何かを行うことによってテストすることができます。

$results = htmlentities($htmlstring); 

あなたはみてくださいhtmlspecialchars機能もあります。

ここでこのについての詳細:あなたはUTF-8としてあなたのHTMLページを提供していない場合は、ブラウザがエンコーディング、通常、シングルバイトのWindowsコードページが依存を推測します

+0

'htmlentities'はしばしば問題になります。エンティティ参照のみが、実際にHTMLエンティティを定義している文字を置き換えます(例: 'é'->'é '、'e̋'-> 'e̋')。 ASCII文字。また省略されたときのデフォルトの 'encoding'引数はISO-8859-1です。これはあなたが実際に作業しているエンコーディングではないため、出力で不正なエンティティ参照が発生します。 – bobince

4

をユーザーのロケールで

しかし、これはAJAXでは起こりません。 XMLHttpRequestでは、Content-Type: ...; charset=パラメータでエンコードを明示的に指定しない限り、ブラウザはUTF-8として扱います。つまり、Windowsコードページ1252(西ヨーロッパ言語)のコンテンツを実際に提供している場合は、無効なUTF-8シーケンスとそれに続く疑問符が付けられます。

UTF-8以外のエンコーディングを使用したくないです!アプリケーション全体でUTF-8を使用していることを確認してください。いずれの場合も

など、UTF-8を選択するmysql_set_charset()を使用して、UTF-8のテーブルにデータを格納し、Content-Type: text/html; charset=utf-8ですべてのページをサーブは、JSONを使ってAJAX応答を渡すことを検討してください。関数json_encode()は非ASCII文字に対してJavaScriptエスケープシーケンスを使用するJSON文字列を作成し、エンコードの不一致の問題を回避します。また、生のHTMLを返すよりも機能を追加する方が簡単です。

関連する問題