PHP:JSON字符串转换为中文,中文转换为JSON字符串
2024-09-02 10:19:14
/**
* 中文转换为JSON字符串
* @param $chinese_str 中文:可以包含中文字母数字
* @return string
*/
function json_encode($chinese_str)
{
$chinese_str = iconv('UTF-8', 'UCS-2', $chinese_str);
$len = strlen($chinese_str) - 1;
$str = '';
for ($i = 0; $i < $len; $i = $i + 2)
{
$c1 = $chinese_str[$i];
$c2 = $chinese_str[$i + 1];
$unicode1=ord($c1);
$unicode2=ord($c2);
if ($unicode1)
{ // 两个字节的文字
$unicode1='\u'.base_convert($unicode1, 10, 16);
$unicode2=base_convert($unicode2, 10, 16);
if(in_array($unicode2,array('a','b','c','d','e','f'))){
$unicode2='0'.$unicode2;
}
$str.=$unicode1.$unicode2;
}else{
$str.=$c2;
}
}
return $str;
} /**
* JSON字符串转换为中文
* @param $json_str JSON字符串
* @return string
*/
function json_decode($json_str)
{
// 转换编码,将JSON字符串转换成可以浏览的utf-8编码
$pattern = '/([\w]+)|(\\\u([\w]{4}))/i';
preg_match_all($pattern, $json_str, $matches);
$chinese_str = '';
if (!empty($matches))
{
$count=count($matches[0]);
for ($j = 0; $j < $count; $j++)
{
$str = $matches[0][$j];
if (strpos($str, '\\u') === 0)
{
$code = base_convert(substr($str, 2, 2), 16, 10);
$code2 = base_convert(substr($str, 4), 16, 10);
$c = chr($code).chr($code2);
$c = iconv('UCS-2', 'UTF-8', $c);
$chinese_str .= $c;
}
else
{
$chinese_str .= $str;
}
}
}
return $chinese_str;
}
最新文章
- MWeb 1.5 发布!增加打字机滚动模式、发布到 Evernote、印象笔记、Wordpress.com、Blogger、编辑器内代码块语法高亮
- C#设计模式(14)——模板方法模式(Template Method)
- Git+GitHub 使用小结
- MFC中OnDraw()和OnPaint()的区别[转]
- 2016 医疗项目 Bootstrap 自适应页面布局(1)
- maven依赖传递关系
- Could not initialize class org.apache.log4j.LogManager 报错
- 防御XSS攻击的七条原则
- 妹子图太多怎么看才好,Swing来支招
- virtualbox 复制多个虚拟机 (宿主机redhat)
- UVA11294-Wedding(2-SAT)
- Entity Framework DBContext 增删改查深度解析
- .Net WebApi 初探
- 多节点,多线程下发订单,使用zookeeper分布式锁机制保证订单正确接入oms系统
- JQ菜单滑块
- ES6 用Promise对象实现的 Ajax 操作
- 以太坊虚拟机(EVM)
- Spring JDBC SqlUpdate类示例
- jpa无外键配置
- request不能接受前端传来的参数的问题
热门文章
- 20145230 《Java程序设计》第8周学习总结
- 20145240 《Java程序设计》第四次实验报告
- VMware 连接不上XSHELL
- 一元多项式的乘法与加法运算 【STL-map哈希-map反向迭代器遍历 + 零多项式】
- PAT1024. Palindromic Number (25)
- script标签加载js代码的一些知识
- vue.js计算属性 vs methods
- 10.0.4_CentOS_120g_for_Qt5.3.2
- Spring boot临时文件目录报错
- Redis中redis.conf配置总结