php将unicode编码转为utf-8方法

ggp php 2018-04-01 567 次浏览

介绍

在前端开发中,为了让中文在不同的环境下都能很好的显示,一般是将中文转化为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编码。

附上js转为实体字符和php将实体字符转为汉字的方法

js将汉字转为实体字符:

  • function convert2Entity(str) {
  • var len = str.length;
  • var re = [];
  • for (var i = 0; i < len; i++) {
  • var code = str.charCodeAt(i); if (code > 256) {
  • re.push(‘&#’ + code + ‘;’);
  • } else {
  • re.push(str.charAt(i));
  • }
  • }
  • return re.join(”);
  • }
回顶部