0

ASCII 233 などのアクセント付き文字を次のようなフォームに入力するとします。

ここに画像の説明を入力

次に、このコードを使用して投稿します。私が理解しているキーポイント: URL エンコーディングは ASCII > 127 では実行できないため、別のコンテンツ タイプを誘導する必要があります。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <script type="text/javascript" src="../js/third_party/jquery.js"></script>
        <script>
            $(document).ready(function(){
                $('#but').click(function(){
                    var fd = new FormData();    
                    fd.append( 'params', $('#inp').val());
                    $.ajax({
                        url: 'http://my-server-address-here',
                        data: fd,
                        dataType: 'json',
                        processData: false,
                        contentType: false,
                        type: 'POST',
                        success: function(data){
                            alert(data);
                        }
                    });
                });
            });
        </script>
    </head>
    <input id="inp"></input>
    <button id="but">Submit</button>
</html>

問題は、ここに示されているように、Chrome がまだ文字を壊しているように見えることです。これはサーバー側のスクリプトに到達する前の段階ですが、そこから出力すると同じ問題が発生します。

ここに画像の説明を入力

このタイプのデータ (サーバーからブラウザーへなど) は、問題や特別なロジックなしで常に出力されるため、特別な翻訳や変換を行わなくても、私の「フランス語 e」をサーバー側で表示できるようにする必要があると思います。ブラウザとリクエストを適切に構成するよりも、私が失敗していると思います。アドバイスをいただければ幸いです。

4

2 に答える 2

0

あなたの例はうまくいくと思います。タグ内でこのページを UTF-8 として扱うようにブラウザに指示しました<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">。つまり、フォーム データを UTF-8 として送信します。ここでは、文字を http 本文の一部として (multipart/form-data として) 送信しているため、パーセント エンコーディングは関係ありません。

Chrome の開発者ツールに表示される文字は、開発ツールが単一文字の é を 2 バイトの UTF-8 文字ではなく、2 つの半角文字として扱った結果です。サーバーは、Chrome 開発ツールのように 2 文字ではなく、2 バイトを 1 文字として適切に読み取る必要があります。

(Node.jsサーバーを使用して例をテストしたところ、サーバーはフォーム本体をUTF-8として適切に解釈し、入力として「é」を返しました。)

于 2013-08-28T16:17:36.243 に答える
0

これは問題なく機能し、コードよりもいくらか単純です

live demo

<!DOCTYPE html>
<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <script type="text/javascript" src="http://code.jquery.com/jquery-git.js"></script>
        <script>
            $(function() {
                $("#but").click(function(){
                    var $data = { "params":$("#inp").val()};
                    $.ajax({
                        url: "dump.php",
                        data: $data,
                        type: "POST",
                        success: function(data){
                            $("#result").html(data);
                        }
                    });
                });
            });
        </script>
    </head>
    <input id="inp" value="Français - Wikipédia"></input>
    <button id="but">Submit</button>
    <div id="result"></div>
</html>
于 2013-08-28T16:26:32.970 に答える