PHP json_encode输出josn格式并解决中文乱码

php代码

 代码如下 复制代码

<?php
header('Content-type: text/json');

$fruits = array (
    "fruits"  => array("a" => "orange", "b" => "banana", "c" => "apple"),
    "numbers" => array(1, 2, 3, 4, 5, 6),
    "holes"   => array("first", 5 => "second", "third")
);
echo json_encode($fruits);
?>

上面是英文是没有问题,如果是中文就会有问题,解决办法如下

Json 只支持 utf-8 编码,我认为是前端的 Javascript 也是 utf-8 的原因。

 代码如下 复制代码

<?php
$array = array
 (
   'title'=>iconv('gb2312','utf-8','这里是中文标题'),
  'body'=>'abcd...'
 );

echo json_encode($array);
?>

结果

 代码如下 复制代码

{"title":"u8fd9u91ccu662fu4e2du6587u6807u9898","body":"abcd..."}

利用js来分析这个函数

 代码如下 复制代码

$(function(){
     $('#send').click(function() {
          $.getJSON('json.php', function(data) {
              $('#resText').empty();
   var html = '';
   $.each( data  , function(commentIndex, comment) {
    html += '<div class="comment"><h6>' + comment['username'] + ':</h6><p class="para">' + comment['content'] + '</p></div>';
   })
  $('#resText').html(html);
         })
    })
})

注意在你的php输出js格式时我们必须是header('Content-type: text/json');这样的头部信息发送哦。

后面加一个完整的可解析中文乱码的问题程序

 代码如下 复制代码

<?php
/**************************************************************
 *
 * 使用特定function对数组中所有元素做处理
 * @param string &$array  要处理的字符串
 * @param string $function 要执行的函数
 * @return boolean $apply_to_keys_also  是否也应用到key上
 * @access public
 *
 *************************************************************/
function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
{
    static $recursive_counter = 0;
    if (++$recursive_counter > 1000) {
        die('possible deep recursion attack');
    }
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            arrayRecursive($array[$key], $function, $apply_to_keys_also);
        } else {
            $array[$key] = $function($value);
        }
 
        if ($apply_to_keys_also && is_string($key)) {
            $new_key = $function($key);
            if ($new_key != $key) {
                $array[$new_key] = $array[$key];
                unset($array[$key]);
            }
        }
    }
    $recursive_counter--;
}
 
/**************************************************************
 *
 * 将数组转换为JSON字符串(兼容中文)
 * @param array $array  要转换的数组
 * @return string  转换得到的json字符串
 * @access public
 *
 *************************************************************/
function JSON($array) {
 arrayRecursive($array, 'urlencode', true);
 $json = json_encode($array);
 return urldecode($json);
}

$array = array
       (
          'Name'=>'希亚',
          'Age'=>20
       );

echo JSON($array);
?>

时间: 2024-10-22 00:36:06

PHP json_encode输出josn格式并解决中文乱码的相关文章

解决中文乱码的几种解决方法(推荐)_JSP编程

首先说明我的特殊情况: 1. 前台jsp中,我使用的是 form post 请求,设置了 enctype="multipart/form-data" ,页面编码格式都是utf-8 2. 后台中,我使用的是commons-fileUpload组件,ServletFileUpload 解析form表单和文件, 3. 设置 request.setCharacterEncoding("UTF-8"); 4. 设置了ServletFileUpload .setHeaderEn

Web---演示servlet技术(servlet生命周期),解决中文乱码问题

本节讲解决中文乱码问题的4种方法. 还有更好的方法,也就是用过滤器,这里就不演示了,博主目前也不会~呼(^∇^*)~过段时间才会学. servlet生命周期演示: index.jsp: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Tran

通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 ‘incorrect string value: &amp;#39;\xF0...

原文:[原创]通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 'incorrect string value: '\xF0... 这篇blog重点在解决问题,如果你对字符编码并不是特别了解,建议先看看 < [原创]通俗易懂地解决中文乱码问题(1) --- 跨平台乱码 >. 当然,如果只是针对解决这个Mysql插入报错问题,本篇足够了.   一.定位错误   定位错误绝对是至关重要的一环.我建议遇到问题耐心分析一下比较好,毕竟"不是所有的牛奶都叫特仑苏

php的GD库imagettftext函数解决中文乱码问题_php技巧

本文实例讲述了php的GD库imagettftext函数解决中文乱码问题的方法.分享给大家供大家参考.具体如下: 使用imagettftext写中文时,常出现乱码问题.解决方法是将中文字符串转为utf-8格式即可.具体代码如下(文件格式为gb2312): 复制代码 代码如下: <?php $im = imagecreatefromjpeg('./1.jpg'); $w = imagesx($im); $h = imagesy($im); $green = imagecolorallocate($

安装vsftpd解决中文乱码的问题

vsftpd-2.1.0 以上的版本已经解决了这个问题.最新版已经无须修改任何设置就可以很好支持各种字符集了.但如果你还在使用较低版本的vsftpd的话,哪么以下方法可以帮助你解决中文乱码的问题. 方法一: 补丁软件下载: http://www.cublohttp://www.aliyun.com/zixun/aggregation/9457.html">g.cn/u/2340/showart_428936.html 过程: 下载vsftpd-2.0.3.tar.gz,http://dow

CentOS 安装搜狗输入法以及解决中文乱码

一.安装搜狗输入法 首先要确保系统中已经安装了中文输入法. 如果你在安装系统时选择了中文,则中文输入法默认就会安装:如果你安装时选择了英文,则必须在安装时选择安装中文输入法,否则不会安装,即使你忘了选择,还是可以在装好系统之后安装.安装方法也非常简单,只需要联网后执行如下命令即可安装 #sudo yum install "@Chinese Support" 二.解决中文乱码 查看系统支持字符集: #locale -a 安装英文版默认的字符集配置为: # cat /etc/sysconf

通俗易懂地解决中文乱码问题(1) --- 跨平台乱码

原文:[原创]通俗易懂地解决中文乱码问题(1) --- 跨平台乱码 本来是只打算写一篇关于中文乱码的blog的,但是发现要讲的东西跨度有点大,不好写到同一篇里面,所以分开了. 另一篇是  <[原创]通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 'incorrect string value: '\xF0...> . 这一篇重点在编码的理论,另一篇重点在解决问题及思路.   一.问题的开始 中文乱码问题经常出现在实际工程中,尤其容易发生在经验不足的团队对问题预

c++ 编程问题-c++与java通信(socket TCP)c++用的默认的编码,java用的UTF-8 怎么解决中文乱码问题

问题描述 c++与java通信(socket TCP)c++用的默认的编码,java用的UTF-8 怎么解决中文乱码问题 c++代码如下,谁可以试着尝试一下,谢谢 #include #include #include #pragma comment(lib,"ws2_32.lib") void main() { //创建套接字 WORD myVersionRequest; WSADATA wsaData; myVersionRequest=MAKEWORD(1,1); int err;

怎么解决中文乱码

问题描述 怎么解决中文乱码 解决方案 解决方案二:LZ说的问题有点笼统,一般情况下就是把你的界面的编码格式设置成UTF-8,所有界面要统一,还有要把你的项目的编码格式,设置的和界面一致,另外就是些过滤器了解决方案三:比如我举一个实例:现在开发JEE的配置环境为Tomcat6.0,MyEclipse,Mysql安装Mysql数据库之前,要将字符集设置为gb2312(为中文简体);在使用MyEclipse新建网页时,头部声明字符集为setCharactorEncoding="gb2312"