Why Does PHP\'s json_encode Function Convert UTF-8 Strings to Hexadecimal Entities?

Patricia Arquette
Release: 2024-11-02 19:32:30
Original
434 people have browsed it

Why Does PHP's json_encode Function Convert UTF-8 Strings to Hexadecimal Entities?

PHP json_encode Function Converts UTF-8 Strings to Hexadecimal Entities: Why and How to Resolve It

The PHP json_encode function can encode PHP variables into JSON (JavaScript Object Notation). However, when dealing with Unicode characters in UTF-8 encoding, the function may convert them to hexadecimal entities by default. This is because JSON does not natively support UTF-8 characters, which are multi-byte characters representing non-ASCII characters.

Why does PHP Convert UTF-8 Strings to Hexadecimal Entities?

PHP's json_encode function uses the JSON specification, which dictates that Unicode characters not representable as ASCII characters must be encoded using hexadecimal escape sequences. This ensures compatibility with older applications and devices that may not support UTF-8.

Resolving the Conversion Issue

To resolve this issue and avoid the conversion of UTF-8 strings to hexadecimal entities, PHP introduced the JSON_UNESCAPED_UNICODE option in version 5.4.0. This option instructs json_encode to use Unicode code points instead of hexadecimal escape sequences for non-ASCII characters.

Example

Suppose you have the following PHP script:

<code class="php"><?php
$text = "База данни грешка.";
echo json_encode($text);
?></code>
Copy after login

This code will output the following JSON string, where the Cyrillic characters are encoded as hexadecimal entities:

<code class="json">"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 \u0433\u0440\u0435\u0448\u043a\u0430."</code>
Copy after login

To output the UTF-8 characters directly, you can use the JSON_UNESCAPED_UNICODE option:

<code class="php"><?php
$text = "База данни грешка.";
echo json_encode($text, JSON_UNESCAPED_UNICODE);
?></code>
Copy after login

This will produce the following JSON string, where the Cyrillic characters are represented using their Unicode code points:

<code class="json">"База данни грешка."</code>
Copy after login

The above is the detailed content of Why Does PHP\'s json_encode Function Convert UTF-8 Strings to Hexadecimal Entities?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template