在使用 Extjs作动态处理有独道之处,最近在使用PHP处理Json串时,遇到中文转换的问题。起初以为是编码问题,在单调后发现并不是编码问题,就要处理 Json转换时导致的乱码。
苦恼了一阵子,找到了解决办法,特此备注一下:
<?php
// 将数组转换成Json格式,中文需要进行URL编码处理
function Array2Json($array) {
arrayRecursive($array, 'urlencode', true);
$json = json_encode($array);
$json = urldecode($json);
// ext需要不带引号的bool类型
$json = str_replace("\"false\"","false",$json);
$json = str_replace("\"true\"","true",$json);
return $json;
}
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--;
}
?>
进行了一URL编码,啥编码都不怕了……
分享到:
相关推荐
本篇知识分享将详细解释在PHP中遇到json_encode中文乱码问题时的解决办法。 ### 1. JSON编码原理简述 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,基于文本,独立于语言,具有良好的可读性和互...
在PHP编程中,`json_encode`函数用于将PHP值转换为JSON格式的字符串。然而,当我们处理包含中文汉字的数据时,`json_encode`默认会转义这些非ASCII字符,导致输出的JSON字符串中中文汉字显示为乱码或者\u编码形式。...
虽然将`json_encode`的编码设置为UTF-8可以在很多情况下解决中文乱码问题,但是在某些情况下,这个问题可能会再次出现。 为了解决`json_encode`在处理UTF-8中文时出现的乱码问题,有开发者分享了一些有效的方法,...
在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。 这个函数的功能是将数值转换成json数据存储格式。 <?php $arr = array ( 'Name'=>'希亚', 'Age...
因此,如果MySQL查询结果包含汉字且未正确设置字符编码,`json_encode`可能会导致乱码或无法解码的错误。为了解决这个问题,我们需要确保以下几个关键点: 1. **数据库编码**:确保MySQL数据库、数据表以及字段的...
使用该选项后,json_encode在处理中文字符时就不会再将其转换为Unicode转义序列,从而避免了输出中出现乱码的问题。 下面这段代码展示了如何使用JSON_UNESCAPED_UNICODE选项: ```php echo json_encode(array('你好...
解决 PHP 中 URL 地址栏传参数中文乱码问题可以使用 urlencode()、urldecode()、iconv()、mb_convert_encoding()、mb_internal_encoding()、ob_start()、base64_encode() 等多种方法,每种方法都有其特点和使用场景...
从上述结果可以看出,通过先对中文字符进行URL编码再解码的方式,可以有效地保持中文字符在JSON中的正常显示,而直接使用json_encode转换的字符串中中文字符则被转换为Unicode编码。 需要注意的是,尽管在某些情况...
如果数据是其他编码,如GBK,那么在编码之前需要先进行转换,否则可能导致乱码或者`json_encode`失败。 在PHP中,处理JSON编码和解码时,有一些常见的问题和解决方法: 1. **BOM问题**:有些编辑器会在文件开头...
在PHP中,如果字符串包含其他编码(如GBK),可能导致`json_encode()`输出null或乱码。为了解决这个问题,可以先将字符串转为UTF-8编码,或者在`json_encode()`时设置`JSON_FORCE_OBJECT`标志,使得非UTF-8字符串也...
在PHP编程中,当涉及到与JSON...总之,理解并掌握不同编码之间的转换和兼容性是解决中文乱码问题的关键。通过合理使用PHP提供的函数如`iconv`和`urlencode`,我们可以确保JSON数据在处理中文字符时保持正确性和可读性。
1. **编码转换**:在调用`json_encode()`之前,先将包含中文字符的数据转换为JSON支持的UTF-8编码。例如,可以使用PHP的内置函数`iconv()`或`mb_convert_encoding()`将其他编码的中文字符转换为UTF-8,然后再进行...
在PHP中,`json_encode` 是一个非常重要的函数,它用于将PHP值转换为JSON(JavaScript Object Notation)格式的字符串。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。然而,在使用...
- 检查字符串是否已经正确编码,避免不必要的转换导致乱码。 - 在处理多语言或国际化项目时,推荐使用UTF-8编码,因为它能包容世界上大部分语言的字符。 总之,尽管`iconv`和`mb_convert_encoding`是PHP编码转换的...
需要注意的是,`json_encode()` 只接受UTF-8编码的字符,因此确保输入的数据已经正确地转换为UTF-8格式,否则可能会导致乱码或编码错误。 对于包含对象的情况,例如: ```php class Person { public $name; ...