首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么PHP 8函数要将json_encode -8字符串转换为十六进制实体?

为什么PHP 8函数要将json_encode -8字符串转换为十六进制实体?
EN

Stack Overflow用户
提问于 2013-05-11 22:44:14
回答 6查看 222.1K关注 0票数 177

我有一个处理各种语言的PHP脚本。不幸的是,每当我尝试使用json_encode时,任何Unicode输出都会转换为十六进制实体。这是预期的行为吗?有没有办法将输出转换成UTF-8字符?

下面是我看到的一个例子:

输入

代码语言:javascript
复制
echo $text;

输出

代码语言:javascript
复制
База данни грешка.

输入

代码语言:javascript
复制
json_encode($text);

输出

代码语言:javascript
复制
"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 \u0433\u0440\u0435\u0448\u043a\u0430."
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-05-11 22:46:11

从PHP/5.4.0开始,有一个名为JSON_UNESCAPED_UNICODE的选项。看看这个:

https://php.net/function.json-encode

因此,您应该尝试:

代码语言:javascript
复制
json_encode( $text, JSON_UNESCAPED_UNICODE );
票数 419
EN

Stack Overflow用户

发布于 2018-09-26 01:11:14

您喜欢设置字符集和未转义的unicode

代码语言:javascript
复制
 header('Content-Type: application/json;charset=utf-8');  
 json_encode($data,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
票数 12
EN

Stack Overflow用户

发布于 2018-05-04 05:45:18

一种解决方案是首先对数据进行编码,然后在同一文件中对其进行解码:

代码语言:javascript
复制
$string =json_encode($input, JSON_UNESCAPED_UNICODE) ; 
echo $decoded = html_entity_decode( $string );
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16498286

复制
相关文章

相似问题

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