Solution: 1. Set the value of the second parameter of json_encode() to "JSON_UNESCAPED_UNICODE"; 2. First transcode the text with urlencode, then use json_encode() to encode, and then perform urldecode decoding. Can.
Recommended: "PHP Video Tutorial"
json_encode() is used to JSON encode variables; if successful Returns a JSON encoded string, or FALSE on failure.
In the encoding process, json_encode is often used to process Chinese. However, there is a problem. Chinese will be transcoded and changed into the format of "\u****". How to avoid being transcoded? , What about garbled codes?
Method 1: PHP version is 5.4 or above;
echo json_encode( '中文' ); // "\u4e2d\u6587" echo json_encode( '中文', JSON_UNESCAPED_UNICODE ); // "中文"
Instructions:
Syntax:json_encode ( $value [, $options = 0 ] )
1. $value is the value to be encoded, and this function is only valid for UTF8 encoded data;
2. options: binary composed of the following constants Masks:
JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_PRESERVE_ZERO_FRACTION, JSON_UNESCAPED _UNICODE, JSON_PARTIAL_OUTPUT_ON_ERROR.
3. The second parameter is generally not needed;
4. JSON data is actually a string, which can be printed out with var_dump() to see the data type;
5. Return JSON data if the execution is successful, otherwise return FALSE.
Method 2: First transcode the Chinese characters urlencode, in json_encode; then urldecode decode;
echo $con = '中文'; // 中文 echo $con = urlencode( $con ); // %E4%B8%AD%E6%96%87" echo $con = json_encode( $con ); // %E4%B8%AD%E6%96%87" echo $con = urldecode( $con ); // "中文"
For more programming-related knowledge, please visit:Introduction to Programming! !
The above is the detailed content of How to solve php json_encode garbled characters?. For more information, please follow other related articles on the PHP Chinese website!