jQuery ajax/响应后编码

jQuery ajax/响应后编码,jquery,encoding,json,Jquery,Encoding,Json,我对通过ajax加载的json编码信息有一个问题 PHP代码(test.PHP): 控制台中的结果如下所示: Productmanager m / f 及 这两个文件都是UTF-8编码的 我真的不知道为什么以及如何将它转换回可读字符串。 你可能知道这是怎么发生的 我在第一次尝试时没有找到合适的解决方案,只是搜索和替换方法。您能试试这个吗 $(document).ready(function() { $.ajax({

我对通过ajax加载的json编码信息有一个问题

PHP代码(test.PHP):

控制台中的结果如下所示:

Productmanager m / f

这两个文件都是UTF-8编码的

我真的不知道为什么以及如何将它转换回可读字符串。 你可能知道这是怎么发生的


我在第一次尝试时没有找到合适的解决方案,只是搜索和替换方法。

您能试试这个吗

$(document).ready(function() {
    $.ajax({
        type: "POST",
        url: "test.php",
        contentType: "application/x-www-form-urlencoded;charset=UTF-8",
        dataType: 'json',
        success: function(data) {
            var response = $.parseJSON(data);
                console.log(response.first);
                console.log(response.second);
        }
    });
});
您可以使用“contentType”为ajax请求设置字符编码

在php方面,您的代码必须如下所示:

<?php
  $val1 = 'Productmanager m / f';
  $val2 = 'test';
  $arr = array('first' => $val1, 'second' => $val2);
  echo json_encode($arr, JSON_UNESCAPED_UNICODE);
?>


重要提示:JSON_UNESCAPED_UNICODE适用于PHP5.4.0

您可以在您的
test.php中尝试这个

<?php
  $val1 = 'Productmanager m / f';
  $val2 = 'test';
  $arr = array('first' => $val1, 'second' => $val2);
  echo json_encode($arr, JSON_UNESCAPED_UNICODE);
?>

添加正确的PHP头并解码字符串:

<?php
  header("Content-type: application/json");
  $val1 = "Productmanager m / f";
  $val2 = "test";
  $arr = array("first" => $val1, "second" => $val2);
  echo json_encode($arr);
?>

<script>

    $(document).ready(function() {
      $.post("test.php", function(data){
        var response = $.parseJSON(data);
        console.log(htmlDecode(response.first));
        console.log(response.second);
      }
    });

function htmlEncode(value){
  return $('<div/>').text(value).html();
}

function htmlDecode(value){
  return $('<div/>').html(value).text();
}

</script>

$(文档).ready(函数(){
$.post(“test.php”,函数(数据){
var响应=$.parseJSON(数据);
log(htmlDecode(response.first));
console.log(response.second);
}
});
函数htmlEncode(值){
返回$('').text(value.html();
}
函数htmlDecode(值){
返回$('').html(value.text();
}

以一个空响应结束:-/PHP 5.4.0版应该可以使用JSON_UNESCAPED_UNICODE选项,所以您可以试着运行您的test.PHP文件,看看它给出了什么输出。好的,然后我必须删除“var response=$.parseJSON(数据);”结果是samei尝试此操作,但必须删除$.parseJSON,因为响应已被解析。结果是相同的。我的Web空间在更新后使用PHP5.3.10运行良好!
<?php
  $val1 = 'Productmanager m / f';
  $val2 = 'test';
  $arr = array('first' => $val1, 'second' => $val2);
  echo json_encode($arr, JSON_UNESCAPED_UNICODE);
?>
<?php
  $val1 = 'Productmanager m / f';
  $val2 = 'test';
  $arr = array('first' => $val1, 'second' => $val2);
  echo json_encode($arr, JSON_UNESCAPED_UNICODE);
?>
<?php
  header("Content-type: application/json");
  $val1 = "Productmanager m / f";
  $val2 = "test";
  $arr = array("first" => $val1, "second" => $val2);
  echo json_encode($arr);
?>

<script>

    $(document).ready(function() {
      $.post("test.php", function(data){
        var response = $.parseJSON(data);
        console.log(htmlDecode(response.first));
        console.log(response.second);
      }
    });

function htmlEncode(value){
  return $('<div/>').text(value).html();
}

function htmlDecode(value){
  return $('<div/>').html(value).text();
}

</script>