Json_encode Chinese display problem solution _ PHP Tutorial-php Tutorial

Source: Internet
Author: User
Json_encode: how to solve the problem displayed in Chinese. In php, the problem of json_encode Chinese display is a problem that has plagued many programmers. next I will introduce you to two solutions to the problem of Chinese display. for details, refer. Json has become a problem of json_encode Chinese display in php, which has plagued many programmers. next I will introduce you to two solutions to Chinese display problems. for details, refer.

Json has become the most common data format for web development. php also supports json and array conversion functions json_encode and json_decode from 5.2. However, we will find that (the Chinese character "you" is used as an example below) all Chinese characters converted using the json_encode function are encoded like u4f60 (you, although it does not affect program execution, it is not intuitive

First, json_encode converts the processing of Chinese characters to the hexadecimal representation u4f60 of the corresponding unicode code (similar to the js escape function (% u4f60), that is, 0x4f60. Therefore, we only need to convert the unicode code (UCS-2) into UTF-8 encoded Chinese characters. The function is as follows:

The code is as follows:

/**
* Json_encode supports the Chinese version.
* @ Param mixed $ data parameter and json_encode are identical
*/
Function json_encode_cn ($ data ){
$ Data = json_encode ($ data );
Return preg_replace ("/\ u ([0-9a-f] {4})/ie", "iconv ('ucs-2', 'utf-8 ', pack ('H * ',' $ 1'); ", $ data );
}

Here, first convert the target data to a json string of the unicode encoding code, then use the regular expression to replace the four letters starting with the corresponding u with the corresponding text, and then transcode it again. The e in preg_replace regular expression allows the second parameter to perform the eval operation. it matches uxxxx first, and then converts the hexadecimal value xxxx to a Unicode character through the pack function, then convert the Unicode code to the UTF-8 code, and then you can see the normal Chinese characters.

Another solution where json_encode () does not support Chinese characters

The code is as follows:

/**
* Urlencode the array and scalar
* Generally, wphp_json_encode () is called ()
* Handling the problem of json_encode Chinese display
* @ Param array $ data
* @ Return string
*/
Function wphp_urlencode ($ data ){
If (is_array ($ data) | is_object ($ data )){
Foreach ($ data as $ k => $ v ){
If (is_scalar ($ v )){
If (is_array ($ data )){
$ Data [$ k] = urlencode ($ v );
} Else if (is_object ($ data )){
$ Data-> $ k = urlencode ($ v );
}
} Else if (is_array ($ data )){
$ Data [$ k] = wphp_urlencode ($ v); // recursively call this function
} Else if (is_object ($ data )){
$ Data-> $ k = wphp_urlencode ($ v );
}
}
}
Return $ data;
}

/**
* Json encoding
*
* The problem that the Chinese characters are not displayed intuitively after json_encode () processing
* By default, "Chinese" is changed to "u4e2du6587", which is not intuitive.
* If you do not have special requirements, we do not recommend using this function. using json_encode directly is better, saving resources.
* Json_encode () parameters can work properly only when the encoding format is UTF-8
*
* @ Param array | object $ data
* @ Return array | object
*/
Function ch_json_encode ($ data ){
$ Ret = wphp_urlencode ($ data );
$ Ret = json_encode ($ ret );
Return urldecode ($ ret );
}

NLP Chinese display is a problem that has plagued many programmers. I will introduce you to two solutions to the problem. Json has been converted...

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.