如何使用$ .ajax发布重音字符(例如> ASCII 127)?

时间:2013-08-28 15:24:22

标签: jquery ajax

假设我将一个重音字符(例如ASCII 233)键入如下形式:

enter image description here

然后我用这段代码发帖。关键点,据我所知:使用ASCII> URL编码是不可行的。 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似乎仍然会破坏角色,如图所示。这是在它甚至到达服务器端脚本之前,但是从那里输出它会显示同样的问题。

enter image description here

我们输出此类型的数据(例如服务器到浏览器)一直没有任何问题或特殊逻辑,因此,我认为必须能够让我的'法语e'显示服务器没有任何特殊的翻译或转换,除了正确配置浏览器和请求之外,我认为我没有做到。任何建议表示赞赏。

2 个答案:

答案 0 :(得分:0)

我相信你的例子很好用。您已经告诉浏览器将此页面视为<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">标记中的UTF-8,这意味着它将以UTF-8的形式提交表单数据。百分比编码与此无关,因为您将字符作为http正文的一部分发送(作为multipart / form-data)。

您在Chrome的开发人员工具中看到的字符是开发工具将单字符é视为两个单字节字符而不是两字节UTF-8字符的结果。您的服务器应该正确地将两个字节读作单个字符,而不是像chrome dev工具那样的两个字符。

(我刚刚使用Node.js服务器测试了你的例子,服务器正确地将表单主体解释为UTF-8,返回“é”作为输入。)

答案 1 :(得分: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>