.load()は文字エンコーディングを無効にする

私はコンテンツを読み込むために次のコードを使用しています:

<script type="text/javascript">
    jQuery.noConflict();
    jQuery(document).ready(function(){
        jQuery('.content-div').load("all-events.html");     
    });
</script>

しかし、コンテンツはUTF-8で必要な特殊文字なしで読み込まれます。 これを私のコードの一番上に置くと、どこかで言及されました:

$html = header('Content-Type: text/html; charset=utf-8'); 

しかし、私はこのエラーを持っています: 'ヘッダが定義されていません'。

5
追加された 著者 pufAmuf,
PHPについて話しているなら、私は次のコードを使用しました。 <�?php header( 'Content-type:text/html; charset = utf-8'); 警告:ヘッダ情報を変更できません - すでに送信されたヘッダ(で出力開始)
追加された 著者 pufAmuf,
私たちに例を挙げてもらえますか?実際のデータを見ることなく推測するのはかなり難しいです。
追加された 著者 Dan,
header()を呼び出した2番目のコードブロックはPHPですか?あなたのページを提供するために何を使用していますか?実装しようとしているコードスニペットは、クライアント側の load()に対するサーバー側のHTTPレスポンスにcontent-typeヘッダーを含める必要があることを示唆しています。
追加された 著者 Mike Haboustak,

3 答え

誰も助けてくれてありがとう、しかし、私は問題が何かを発見した。問題は、基本テキストファイルに headers を追加しても、実際のエンコーディングは変更されないということでした。私はそのファイルをメモ帳に書き、エンコードが正しいかどうかをチェックする方法がありませんでした。私はそれを Notepad ++ で開き、そのアプリケーションからエンコーディングを設定しました。この問題に苦しんでいる他の人に役立つことを願っています:)

7
追加された
お役に立てて嬉しいです :)
追加された 著者 pufAmuf,
ありがとう!私はNotepad ++で 'BOM without UTF-8'エンコーディングを設定しています! :)
追加された 著者 Tomasz Bielaszewski,

私は同じ問題を経験していましたが、元のポスターの受け入れられた答えは役に立たなかった。ベローズアクションの1つを実行すると、私のためにそれが解決されました。

  1. Changing the retrieved document's extension from ".html" to ".php".

  2. Adding a .htaccess file to the main directory of the home page with the following content:

    AddDefaultCharset UTF-8
    
  3. A combination of the two above


この問題の詳細:

Firebugでレスポンスとリクエストヘッダーを調べると、サーバ(Apache)がcharset ISO-8859-1でエンコードされたコンテンツを返すのが見えました。私が必要としたのはUTF-8でした。

すべてのファイルはBOMなしでUTF-8としてエンコードされていましたが、

 header("Content-Type: text/html; charset=utf-8");

jQueryがブラウザの .innerHTML プロパティを使用して検索されたドキュメントを解析し、現在のドキュメントに挿入するため、動的にインクルードされた.htmlファイルの要素がフィルタリングされていました。 Mike Haboustakが指摘する。詳細については、 jQueryのドキュメント load を参照してください。

4
追加された
.htaccessは私のために働いた。ありがとうございました!かなりの間それを修正しようとしていた
追加された 著者 siiikooo0743,

jQueryの load()メソッドは、ブラウザのinnerHTML実装を使用して、リクエストから返されたHTMLを現在のドキュメントにロードします。これは、受信HTMLが現在の文書と同じテキストエンコーディングを使用しなければならないことを意味します。 ISO 8859-1 ドキュメントに UTF-8 文字を挿入することはできません。

これをJavascriptではなくサーバーで修正する必要があります。元のHTML(あなたのjQueryを含む)に応答しているサーバー側のコードは、適切な文字エンコーディングでコンテンツタイプのヘッダーを含める必要があります。 PHPを使用している場合、私はあなたがそれを行う方法の例を見つけたと思います。

1
追加された
PHPについて話しているなら、私は次のコードを使用しました。 <�?php header( 'Content-type:text/html; charset = utf-8'); 警告:ヘッダ情報を変更できません - すでに送信されたヘッダ(で出力開始)
追加された 著者 pufAmuf,
コンテンツが送信される前に(空白であっても)PHPファイルの最初の行にする必要があります。 PHPドキュメントをご覧ください。
追加された 著者 Mike Haboustak,