php 中文unicode编码问题

现象:众所周知使用json_encode可以方便快捷地将对象进行json编码,但是如果对象的属性中存在着中文,问题也就随之而来了。json_encode会将中文转换为unicode编码,例如:‘胥‘经过json_encode处理后变为‘\u80e5‘,最终的json中中文部分被替换为unicode编码。我们要解决的就是将对象转换为json并保证对象内部的中文在json中仍然是以正常的中文出现,现在看来只使用json_encode是不能达到目的的。

  我的解决方法:先将类中的中文字段进行url编码(urlencode),然后再对对象进行json编码(jsonencode),最后url解码(urldecode)json,即最终的json,里面的中文依旧是那个中文!

测试代码如下:

 1 <?php 2 class myClass { 3     public $item1 = 1; 4     public $item2 = ‘中文‘; 5      6     function to_json() { 7         //url编码,避免json_encode将中文转为unicode 8         $this->item2 = urlencode($this->item2); 9         $str_json = json_encode($this);10         //url解码,转完json后将各属性返回,确保对象属性不变11         $this->item2 = urldecode($this->item2);12         return urldecode($str_json);13     }14 }15 16 $c = new myClass();17 echo json_encode($c);18 echo ‘<br/>‘;19 echo $c->to_json();20 echo ‘<br/>‘;21 echo json_encode($c);22 echo ‘<br/>‘;23 echo json_encode(‘胥‘);24 ?>

程序输出结果:

{"item1":1,"item2":"\u4e2d\u6587"}{"item1":1,"item2":"中文"}{"item1":1,"item2":"\u4e2d\u6587"}"\u80e5"
时间: 2024-10-12 05:17:06

php 中文unicode编码问题的相关文章

phpstorm配置git并解决Terminal 中文乱码(Unicode 编码)的方法

前言:在使用PHPstorm的时候,需要用到terminal,主要还是用这个操作git,但是在使用这个的时候会发现,代码里所有中文都是乱码状态,不利于使用,下面就来看看怎么解决这个问题 一.先在phpstorm上配置git 1.打开 settings 设置界面,选择 Tools 中的 Terminal (File -> settings -> Tools -> Terminal) 2.修改 Shell path 为你的Git bash 安装路径,我的在 D:\developer\Git\

解决 iOS NSDictionary 输出中文字符”乱码”(Unicode编码)问题

简单定义一个字典,输出结果: NSDictionary *dic = @{ @"我是中文字符": @"223333", @"aaa": @{ @"aaa": @"啦啦啦" } }; NSLog(@"%@", dic); 将会看到这样的"乱码",这种现象经常在调试服务端返回 JSON 结果的时候遇到: 2015-02-25 19:23:40.346 XXXX[13273

PHP输出json数据时,中文不进行unicode编码

今天在写和API接口时,将PHP数组转成json,但是有个规则是不能用unicode编码 试了几种方法: 若PHP是5.4以上的 可以直接使用JSON_UNESCAPED_UNICODE参数 json_encode('中文测试',JSON_UNESCAPED_UNICODE); 这种方法字符串可行,但是数组不可行(有待验证) 2.将数组中的字符串urlencode,然后将数组json_encode转成json,最后进行urldecode 注:urlencode()和urldecode()将中文字

常用中文字体 Unicode 编码

各大网站的字体选择 网站 字体 腾讯 font: 12px "宋体","Arial Narrow",HELVETICA; 淘宝 font: 12px/1.5 tahoma,arial,'Hiragino Sans GB',\5b8b\4f53,sans-serif; 蘑菇街 font: 12px/1.6 tahoma,arial,sans-serif; SegmentFault font-family: "Helvetica Neue",Helv

python中文utf8编码后是占3个字符,unicode汉字为2字节

一个中文utf8编码后是占3个字符,所以求长度的函数可以这样写 def str_len(str): try: row_l=len(str) utf8_l=len(str.encode('utf-8')) return (utf8_l-row_l)/2+row_l except: return None return None unicode中汉字为两字节, utf-8中汉字为三字节 https://en.wikipedia.org/wiki/Unicode https://en.wikipedi

Unicode编码与中文的转换

1.1.  将unicode编码转换为中文 public String decodeUnicode(String src) { char[] in = src.toCharArray(); char aChar; char[] out = new char[src.length()]; int outLen = 0; int off = 0; int end = src.length(); while (off < end) { aChar = in[off++]; if (aChar == '

[C语言]Unicode编码(二)-中文字符刷选

Unicode编码(二)-中文字符刷选 1,UTF-8编码中三字节中文字符的刷选方法如下: int chinese_filter(unsigned char one, unsigned char two ) {     int flag = -1;     if ( one >= 0x4E && one < 0x9F )     {         flag = 1;     }     else if ( one == 0x9F && two <= 0x

Css中常用中文字体的Unicode编码对照

在网页制作中,最常用的恐怕是字体属性了,在调整页面兼容的时候,也常常发现字体名称的原因导致不兼容或乱码,下面给出几种常用字体的ucicode编码对照,方便使用. 宋体 SimSun \5B8B\4F53 黑体 SimHei \9ED1\4F53 微软雅黑 Microsoft YaHei \5FAE\8F6F\96C5\9ED1 微软正黑体 Microsoft JhengHei \5FAE\x8F6F\6B63\9ED1\4F53 新宋体 NSimSun \65B0\5B8B\4F53 新细明体

解决php函数json_encode转换后中文被编码为unicode

大家都知道使用函数json_encode()可以方便快捷地将数组进行json编码转换,但是如果数组值存在着中文,json_encode会将中文转换为unicode编码,例如: <?PHP $array = array('中国','美国','高富帅','白富美','屌丝'); echo json_encode($array); 打印出的结果为: ["\u4e2d\u56fd","\u7f8e\u56fd","\u9ad8\u5bcc\u5e05&quo