Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery AJAX字符编码_Jquery_Ajax_Character Encoding - Fatal编程技术网

jQuery AJAX字符编码

jQuery AJAX字符编码,jquery,ajax,character-encoding,Jquery,Ajax,Character Encoding,我目前正在编写一个法语网站。有一个日程表页面,可以使用旁边的链接加载另一天的日程表 下面是我用来做这件事的JS: <script type="text/javascript"> function load(y) { $.get(y,function(d) { $("#replace").html(d); mod(); }); } function mod() {

我目前正在编写一个法语网站。有一个日程表页面,可以使用旁边的链接加载另一天的日程表

下面是我用来做这件事的JS:

    <script type="text/javascript">
    function load(y) {
        $.get(y,function(d) {
            $("#replace").html(d);
            mod();
        });
    }
    function mod() {
        $("#dates a").click(function() {
            y = $(this).attr("href");
            load(y);
            return false;
        });
    }
    mod();
    </script>

功能负载(y){
$.get(y,函数(d){
$(“#替换”).html(d);
mod();
});
}
函数mod(){
$(“#日期a”)。单击(函数(){
y=$(this.attr(“href”);
载荷(y);
返回false;
});
}
mod();
实际的AJAX工作起来很有魅力。我的问题在于对请求的响应

因为它是一个法语网站,所以有很多重音字母。我使用ISO-8859-15字符集正是出于这个原因。但是,在对我的AJAX请求的响应中,重音变成了?,因为字符编码似乎改回了UTF-8

我如何避免这种情况?我已经尝试在请求的文档顶部添加一些PHP来设置字符集:

<?php header('Content-Type: text/html; charset=ISO-8859-15'); ?>

但这似乎也不起作用。有什么想法吗

另外,当你们中的任何人都在这里查看时……为什么在加载新页面时,最右边的列似乎变小了,导致表格扭曲,并且
中的每个
  • 都换行到下一行


    干杯

    UTF-8应该处理所有口音和外来字符-为什么不在您的数据源上使用它呢

    编辑
    []使用您的数据

    首先,一切都应该是UTF-8。我用记事本++加载了文件,转换成utf-8,并手动将字符更改为所需的重音。一旦完成,一切都会很顺利


    顺便说一句,除非您的服务器被定义为php process.html文件,否则使用ajax加载的文件不会获得iso字符集。如果坚持使用iso字符集,请请求一个php文件而不是html文件,并在标题中定义字符集(而不是在文件本身中)

    您需要将服务器设置为使用iso-8859-15作为字符编码(添加适当的HTTP标题)。在html的主体中这样做没有帮助

    我能看到这条线

    <?php header('Content-Type: text/html; charset=ISO-8859-15'); ?>
    
    
    

    在html的源代码处。这不应该发生。使用Live HTTP头,我看不到相应的字符集HTTP头。在打印ajax文件中的变量时,将其用于第一页和ajax服务。

    。放

    htmlentities()
    

    在他们周围,看看它是否有效。在一个冰岛ajax应用程序中为我工作。

    在ajax调用中指定内容类型解决了我在挪威网站上遇到的问题

    $.ajax({
            data: parameters,
            type: "POST",
            url: ajax_url,
            timeout: 20000,
            contentType: "application/x-www-form-urlencoded;charset=ISO-8859-15",
            dataType: 'json',
            success: callback
    });
    
    您还必须在服务器上指定字符集

    <?php header('Content-Type: text/html; charset=ISO-8859-15'); ?>
    

    我的页面也有同样的问题:

    • 正常通话时表现良好
    • 当通过ajax请求调用时,是否将特殊字符弄乱了

    为了解决这个问题(使用php),我在源数据上使用了
    utf8\u encode()
    htmlentities()
    。两者都有效,我在不同的项目中使用过。

    我不同意所有内容都必须是UTF-8,你可以使用ISO 8859使其完美工作,我做到了,请阅读我的回复


    我建议使用javascript escape()方法

    您可以通过如下方式获取表单值,将其用于jQuery:

    var encodedString = escape($("#myFormFieldID").val());
    

    我在西班牙门户网站的内容评论系统中工作时遇到了类似的问题。 经过数小时的搜索,最终解决了我的问题的是,在处理ajax帖子的PHP中,从utf-8解码回ISO-8859-1,而不是使用jQuery字符集,不管怎样,它似乎都使用utf-8。在PHP中有一个内置函数,
    utf8\u decode()
    ,因此我对注释字符串所做的第一件事是:

    $comentario = utf8_decode($_POST['comentario']);
    
    (然后我使用
    nl2br()
    htmlentities()
    PHP函数来准备要用html实体而不是特殊字符存储的文本)

    祝你好运平安!
    Seba

    我一直在摆弄这个问题,发现这个解决方案适用于Firefox和safari(是的,我现在在mac上)

    当收到请求时,我在此处创建了一个content type=iso-8859-1:

    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
      httpRequest = new XMLHttpRequest();
            if (httpRequest.overrideMimeType) {
                httpRequest.overrideMimeType('text/xml; charset=ISO-8859-1');
            }
        }
    

    如果有人发现这在ie中不起作用,请告诉我。

    刚刚将
    {“type”:“GET”}
    更改为
    {“type”:“POST”}
    ,并对
    ISO-8859-1

    进行了出色的处理。对于我的PHP应用程序,解决方案是为进入
    $\u POST
    的每个变量包含utf8解码函数

    例:(服务器端)


    阿布拉索斯!!!(再见!!!)


    有关更多信息,请参见和

    我的网页在ASP方面也有类似问题。我决定:

    1) 在Jquery ajax方法调用的ASP文件开头插入指令:

    Response.Charset = "windows-1252"
    
    在我的asp页面中,在没有定义字符集之前,我用ANSI编码保存了我的文件(文本编辑器为notepad++)

    2) 在使用jquery ajax方法调用ASP文件的html文件中,我插入了如下所示的参数内容类型:

    $.ajax({         
    data: parameters,         
    type: "POST",         
    url: ajax_url,
    datatype: 'html',         
    contentType: "text/html;charset=windows-1252",
    

    简单地说,在ASP文件中定义名为字符集的内容非常重要。奇怪的是,我发现我的jquery可以在windows-1252上运行,但不能在ISO-8859-1字符集上运行:在这种情况下,jquery ajax方法给出了一个例外。

    我遇到了瑞典/挪威字母显示为问号的问题,尽管指定了:

    <script type="text/javascript">
      function GetContent(idUser){ 
        $.ajaxSetup({
          url: 'ping.php'
        });
    
        $.ajax({
          type: "POST",
          url: "blablabla.php",
          dataType: "text",
          data: ({ParamUserID:idUser}),// here we def wich variabe is assiciated
          contentType: "application/x-www-form-urlencoded; charset=iso-8859-1",
          success: function(html) {
            $('#user_specified_content').html(html);
          }
        });     
      }
    </script> 
    
    contentType: "application/json; charset=utf-8",
    
    通过在字符串中添加
    encodeURIComponent
    解决了这个问题

    url: "/set_comment.do?text=" + encodeURIComponent(comment),
    

    我也遇到过同样的问题,并尝试过几种方法。我找到了解决办法。如果您将请求头设置为“接受”,如下所示

    $.ajax({
            data: parameters,
            type: "POST",
            url: ajax_url,
            dataType: 'json',
            beforeSend : function(xhr) {
                xhr.setRequestHeader('Accept', "text/html; charset=utf-8");
            },
            success: callback
    });
    
    你会看到所有的字符看起来都是正确的
    contentType: "application/json; charset=utf-8",
    
    url: "/set_comment.do?text=" + encodeURIComponent(comment),
    
    $.ajax({
            data: parameters,
            type: "POST",
            url: ajax_url,
            dataType: 'json',
            beforeSend : function(xhr) {
                xhr.setRequestHeader('Accept', "text/html; charset=utf-8");
            },
            success: callback
    });
    
    mysql_set_charset('utf8',$connection);
    
    $this->output->set_header('Content-type: text/html; charset='.$this->config->item('charset'));
    
     $.ajax({
            async:false,
            type: "GET",
            url: "data/FileName.txt",
            dataType: "text",
            contentType: "application/x-www-form-urlencoded;charset=UTF-8",
            success: function (data) {
               alert(data);
            }
        });
    
    $.ajax({
        async: false,
        type: 'GET',
        url: 'some-url',
        success: function(data, status) {
            mainController.constructionStageMaster = data.records;
         }
    });
    
    {
        "records": [
            {
                "StageDesc": "Excavation, Fondation et Bases",
                "Allowed": 9,
                "Completed": 0,
                "TotalCompleted": ""
            },
            {
                "StageDesc": "Étanchement et Remblayage",
                "Allowed": 3,
                "Completed": 0,
                "TotalCompleted": ""
            },
            {
                "StageDesc": "Encadrement et revêtement mural intermédiaire",
                "StageDesc_fr": "Encadrement et revêtement mural intermédiaire np++",
                "StageDesc_fr2": "Encadrement et revêtement mural intermédiaire",
                "Allowed": 15,
                "Completed": 0,
                "TotalCompleted": ""
            }
            ...
        ]
    }
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js">
    </script>
    <script>
      $.ajaxSettings.mimeType="*/*; charset=ISO-8859-15";// set you charset
    </script>