6

JQuery load() メソッドを使用してコンテンツをページにロードしています。唯一の問題は、load() メソッドを介してコンテンツをロードすると、すべての国別 (ポーランド) 文字が無効に表示されることです... ロードされたページとメイン (コンテンツがロードされる) の両方のページで、コーディングが iso-8859-2(yeah 、私は知っています、私はutf-8 boを使用する必要がありますが、この場合は役に立ちません)。

私はそれを解決する方法を本当に知りません。私が考えた唯一の解決策は、特殊文字を、ロードする前とそれをデコードするデータを受け取った後に何らかのコードに置き換えることですが、それはちょっと複雑です:D

何か案は?

乾杯

4

4 に答える 4

5

わかりました、私はいくつかの研究をしました。そして、これが私が見つけたものです:

jQueryは の HTMLタグを.load()調べません。次の 2 つのオプションのいずれかを選択できます。metacontent-type

  1. HTTP 応答ヘッダーを設定してContent-type: text/html; charset=iso-8859-2jQuery を使用するには.load()。たとえば、PHP では、これをページの上部に配置することで実行できます。

    <?php header('Content-type: text/html; charset=iso-8859-2'); ?>

  2. jQuery を使用して、クライアント側で HTTP 応答コンテンツ タイプをオーバーライドします。この目的のために、設定mimeType: "text/html; charset=iso-8859-2"を に渡す必要があります$.ajax().load()ajax 設定を設定する機能がサポートされていないため、これを使用してこれを行うことはできません。

両方のオプションがテストされたので、すべてが機能するはずです! :)

于 2011-07-02T13:08:52.207 に答える
1

選択した文字セット (ISO-8859-2) が実際に使用したい文字を表すことができると仮定すると、ファイルがサーバーから正しい文字セット ('charset') で提供されないという問題があるようです。

を使用load()して HTML ファイルを要求している場合、HTML ファイルの charset パラメータはContent-Type、応答のヘッダーで設定するかmeta、HTML コンテンツにタグとして含めることができます。

Content-Type ヘッダーを正確に設定する方法は、HTML を生成または提供する方法によって異なります。W3C には、いくつかの Web サーバーとプログラミング言語でそれを行う方法を説明した優れたドキュメントがあります。

http://www.w3.org/International/O-HTTP-charset

charset メタ タグを設定する方が簡単かもしれません。正確な構文は、HTML のバージョンによって異なります。ここでいくつかの情報を見つけることができます。

http://en.wikipedia.org/wiki/Character_encodings_in_HTML#Specifying_the_document.27s_character_encoding

複数のコメント投稿者が示唆しているように、Web サイトでさまざまな言語のサポートを最大化したい場合は、これらの非互換性が発生する可能性を最小限に抑える UTF-8 などの Unicode エンコーディングに移行することを検討することもお勧めします。

于 2011-07-02T12:11:29.770 に答える
0

私は同じ問題を抱えていて、複数のスレッドを読んで解決しました。私がしたことは、新しい関数/プラグインを作成し、それに mimetype と contentType を追加することで、正しいエンコーディングが返されました。

    (function($){
    $.fn.formatload = function( url, params, callback ) {
        if ( typeof url !== "string" ) {
            return _load.call( this, url );

        // Don't do a request if no elements are being requested
        } else if ( !this.length ) {
            return this;
        }

        var off = url.indexOf(" ");
        if ( off >= 0 ) {
            var selector = url.slice(off, url.length);
            url = url.slice(0, off);
        }

        // Default to a GET request
        var type = "GET";

        // If the second parameter was provided
        if ( params ) {
            // If it's a function
            if ( jQuery.isFunction( params ) ) {
                // We assume that it's the callback
                callback = params;
                params = null;

            // Otherwise, build a param string
            } else if ( typeof params === "object" ) {
                params = jQuery.param( params, jQuery.ajaxSettings.traditional );
                type = "POST";
            }
        }

        var self = this;

        // Request the remote document
        jQuery.ajax({
            url: url,
            type: type,
            mimeType: "text/html; charset=iso-8859-2",
            dataType: "html",
            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
            data: params,
            complete: function( res, status ) {
                // If successful, inject the HTML into all the matched elements
                if ( status === "success" || status === "notmodified" ) {
                    // See if a selector was specified
                    self.html( selector ?
                        // Create a dummy div to hold the results
                        jQuery("<div />")
                            // inject the contents of the document in, removing the scripts
                            // to avoid any 'Permission Denied' errors in IE
                            .append(res.responseText.replace(rscript, ""))

                            // Locate the specified elements
                            .find(selector) :

                        // If not, just inject the full result
                        res.responseText );
                }

                if ( callback ) {
                    self.each( callback, [res.responseText, status, res] );
                }
            }
        });

        return this;
    }
})(jQuery);

通常の jQuery ロードとして呼び出されます。例えば

$('#div').formatload(url, data, function(data){/*ここで処理 */ });

于 2013-05-29T03:25:50.343 に答える