首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP的json_encode中的西里尔字母

PHP的json_encode中的西里尔字母
EN

Stack Overflow用户
提问于 2009-01-04 09:04:22
回答 8查看 38.9K关注 0票数 19

我正在尝试使用php的函数json_encode将西里尔UTF-8数组编码为JSON字符串。示例代码如下所示:

代码语言:javascript
复制
<?php
  $arr = array(
     'едно' => 'първи',
     'две' => 'втори'
  );
  $str = json_encode($arr);
  echo $str;
?>

它工作得很好,但脚本的结果表示为:

代码语言:javascript
复制
{"\u0435\u0434\u043d\u043e":"\u043f\u044a\u0440\u0432\u0438","\u0434\u0432\u0435":"\u0432\u0442\u043e\u0440\u0438"}

这使得每个西里尔字符有6个字符。有没有办法获得键/值对的原始字符,而不是编码的字符?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-09-23 20:12:47

这里不能使用JSON_UNESCAPED_UNICODE常量吗?

票数 25
EN

Stack Overflow用户

发布于 2009-08-04 18:28:58

我在Zend框架的代码中发现了这个:

http://framework.zend.com/svn/framework/standard/trunk/library/Zend/Json/Decoder.php

看一下函数decodeUnicodeString (第474行):

代码语言:javascript
复制
 /**
     * Decode Unicode Characters from \u0000 ASCII syntax.
     *
     * This algorithm was originally developed for the
     * Solar Framework by Paul M. Jones
     *
     * @link   http://solarphp.com/
     * @link   http://svn.solarphp.com/core/trunk/Solar/Json.php
     * @param  string $value
     * @return string
     */
    public static function decodeUnicodeString($chrs)

它是静态的,您可以很容易地将其提取出来--只需替换下面这行:

代码语言:javascript
复制
490:           $utf8 .= self::_utf162utf8($utf16);

通过以下方式:

代码语言:javascript
复制
490:           $utf8 .= mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');

不是一个理想的解决方案,但为我做了工作:o)

票数 10
EN

Stack Overflow用户

发布于 2014-08-14 13:49:01

代码语言:javascript
复制
$str = json_encode($arr, JSON_UNESCAPED_UNICODE);

这个解决方案适用于我的拉丁语和西里尔字母表,以及PHP5.5

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/410704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档