Home >Backend Development >PHP Tutorial >How to Handle Malformed UTF-8 Characters during JSON Encoding in PHP?
Fixing Malformed UTF-8 Characters during PHP JSON Encoding
Introduction:
JSON is a popular data format for transmitting and storing data in a platform-independent manner. However, issues may arise when attempting to encode data containing non-UTF-8 characters. This discussion addresses a common problem encountered during JSON encoding in PHP, specifically related to malformed UTF-8 characters.
Problem:
When using json_encode($data) to encode an array containing a field with Russian characters, an error can occur due to malformed UTF-8 characters within the text. Utilizing mb_detect_encoding() reveals that the field is correctly encoded as UTF-8. Attempts to use utf8_encode on the data result in a bypass of the error, but it compromises the data's integrity.
Solution:
The issue lies in the presence of non-UTF-8 characters within the supposedly UTF-8 encoded text. To resolve this, remove any non-UTF-8 characters from the text, ensuring that the encoding remains consistent throughout.
The following code effectively addresses this problem:
<code class="php">$data['name'] = mb_convert_encoding($data['name'], 'UTF-8', 'UTF-8');</code>
This code converts the value of the 'name' key in the $data array to UTF-8 encoding, overwriting any non-UTF-8 characters with their UTF-8 equivalents. The result is a UTF-8-compliant string that can be successfully encoded as JSON.
The above is the detailed content of How to Handle Malformed UTF-8 Characters during JSON Encoding in PHP?. For more information, please follow other related articles on the PHP Chinese website!