2

jqueryのajax()メソッドを使用して、XML形式でラップされたデータをサーバーに送信しています。

url = "http://mysite.com/service/command";    
input = "my string";
xml = "<request><space>"+space_id+"</space><input>"+input+"</input></request>";
$.ajax({ 
    type: "POST", 
    url: url,
    dataType: 'xml;charset=UTF-8',
    data: xml
});

メソッドの「data」プロパティに渡される入力文字列に発音区別符号が存在する場合、UTF-8文字エンコードにもかかわらず、それらの文字はサーバーに送信される前に他の奇妙な組み合わせに変換されます。例として、以下はサーバーに送信されるデータであり、入力文字列はääääです。Chromeの開発者ツールからコピーしました->ネットワーク:

<request><space>2080878</space><input>ääää</input></request>

この問題を解決し、発音区別符号がこのように「ねじれる」のを防ぐにはどうすればよいですか。

4

1 に答える 1

0

私はこれがそれを解決するはずだと思います:

  1. JavaScriptをUTF-8でエンコードされた形式で保存します。「メモ帳」を使用する場合は、メニューから「ファイル->名前を付けて保存」を使用し、右下の「保存」ボタンのエンコーディングとして「UTF-8」を選択します。理由:input="äää"; UTF-8でエンコードされた文字としてファイルに保存する必要があります。

  2. 入力要素(テキストエリア、入力行など)から入力を受け取った場合は、いくつかの方法でUTF-8でエンコードされていることをブラウザに通知します。1つの可能性は、次のようなHTTPヘッダーを追加することです(これがスクリプト(PHPやASPなど)の出力である場合)。

    コンテンツタイプ:text / html; charset = utf-8

  3. 不可能な場合は、次のようなスクリプトを使用しているhtmlファイルのヘッダーにMETA-Tagを配置します。

    <meta http-equiv = "Content-Type" content = "text / html; charset = utf-8">

  4. スクリプトを含む/実行するhtmlファイルにDOCTYPEを追加します。理由:一部のブラウザは、ISO-8859-1エンコーディングなどを想定した古い互換性メカニズムを使用してDOCTYPEなしでhtmlを解釈します。私が指摘したJavaScriptにはさらに悪い影響があります...したがって、HTMLドキュメントの先頭に常に次のようなDOCTYPEを追加してください(「厳密」である必要はありません)。

    <!DOCTYPE HTML PUBLIC "-// W3C // DTD HTML 4.01 // EN" " http://www.w3.org/TR/html4/strict.dtd ">

お役に立てば幸いです;-)

于 2012-08-14T17:32:50.877 に答える