php 中文转 utf-8编码,PHP 将 unicode 编码转为 utf-8 方法

介绍

在前端开发中,为了让中文在不同的环境下都能很好的显示,一般是将中文转化为unicode格式,即\u4f60,比如:”你好啊”的 unicode编码为”\u4f60\u597d\u554a”。

JS里将中文转为unicode编码很简单。

function convert2Unicode(str) {

return str.replace(/[\u0080-\uffff]/g,

function($0) {

var tmp = $0.charCodeAt(0).toString(16);

return "\u" + new Array(5 - tmp.length).join('0') + tmp;

});

}

并且也很简单,直接alert出来或者innerHTML到dom节点里都可以。

但如果将\u4f60\u597d\u554a”字符传递给php,php就不能直接echo或者其他操作了。直接echo的话还是原生的字符,不 能自动转化为中文。

php将unicode转为utf-8方法

在php5.0及以上版本中提供了json_encode, json_decode方法。在使用json_encode变量的时候,如果变量里含有中文的话,会将中文转为unicode格式。所以在想是否可以通过 json_decode将unicode转为中文呢?实际测试发现是可以的,但对单一的字符串发现有些问题。

对于简单的字符串,发现有时候使用json_decode转的化,结果直接为空了。但将字符串替换为数组然后在转就可以了。下面就有了下面封装的代 码。

function unicode2utf8($str){

if (!$str) return $str;

$decode = json_decode($str);

if ($decode) return $decode;

$str = '["' . $str . '"]';

$decode = json_decode($str);

if (count($decode) == 1) {

return $decode[0];

}

return $str;

}

使用这个方法可以很好的将unicode编码转为utf-8编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值