After the encodeURIComponent function in JS encodes Chinese, how to decode it with php? ?
Premise: The Chinese before encoding may be gbk, gb2312, utf-8, etc.
Copy the code The code is as follows:
urldecode()
iconv()
Use encodeURIComponent in JS to encode Chinese. Use iconv('UTF-8','gb2312', $q); you can get the string you need, among which gb2312 is determined according to your actual application. If you still don’t understand why, please read the following article
URL encoding conversion, escape() encodeURI() encodeURIComponent()
This article introduces the encoding of url Three encoding functions: escape(), encodeURI(), encodeURIComponent()
escape() method:
Use the ISO Latin character set to encode the specified string. All spaces, punctuation marks, special characters and other non-ASCII characters will be converted into character encoding in %xx format (xx is equal to the hexadecimal number of the character's encoding in the character set table). For example, the encoding corresponding to the space character is %20. The unescape method is the opposite. Characters that will not be encoded by this method: @ * / +
encodeURI() method:
Convert the URI string into an escape format string using UTF-8 encoding format. Characters that will not be encoded by this method: ! @ # $& * ( ) = : / ; ? + '
encodeURIComponent() method:
Convert the URI string into an escape format string using UTF-8 encoding format. Compared with encodeURI(), this method will encode more characters, such as / and other characters. So if the string contains several parts of the URI, you cannot use this method to encode, otherwise the URL will display an error after the / character is encoded. Characters that will not be encoded by this method: ! * ( )
Therefore, for Chinese strings, if you do not want to convert the string encoding format into UTF-8 format (for example, the charset of the original page and the target page is consistent time), just use escape. If your page is GB2312 or other encoding, and the page that accepts parameters is UTF-8 encoded, you must use encodeURI or encodeURIComponent.
Note: The escape method cannot be used to encode Uniform Resource Identifiers (uri). To encode it, use the encodeuri and encodeuricomponent methods. In addition, encodeURI/encodeURIComponent was introduced after javascript1.5, and escape was available in javascript1.0.
To summarize the usage:
1. By default, the HTTP/POST method uses "x-www-form-urlencoded" for encoding, which plays the same role as encodeURI in JavaScript;
2. When the content encoded in this way reaches the background, the characters are all in UTF-8 encoding format;
3. If the Content-Type used for the specified output of your Servlet/JSP is UTF-8, congratulations, you do not need to These Parameters undergo special encoding and decoding operations, and they must be normal;
4. Otherwise, you need to decode and encode these parameters. For example, if your page is GBK encoded, then you need to write like this:
String sPara = new String(request.getParamter("test").getBytes("iso-8859-1"),"GBK");
If you use gb2312 encoding, you can also use GBK encoding;
5. If you are working in eclipse, Please pay attention to the properties of your Servlet and JSP files. The encoding must be the same as that set in content-type. Otherwise, javac will encode your file incorrectly. At this time, the string of the bytecode file itself will be wrong. , the output is useless;
6. Finally, make a summary:
6.1. The encoding of the servlet/JSP file itself must be consistent with the content-type output, otherwise additional encoding and decoding steps need to be added;
6.2. HTTP/POST The encoding passed in the method and encodeURI method are both UTF-8;
6.3. Ordinary window.open(...), that is, the HTTP/GET method, the encoding passed in is consistent with the encoding of the page running the script. ;
6.4. Background decoding must be decoded through iso-8859-1, and then encoded using your target encoding;
6.5. response.setContentType("text/xml;charset=utf-8");
If there are Chinese characters in the reply When displayed on the page, the words charset=utf-8 must be added
request.setCharacterEncoding("UTF-8");//If the page comes through POST and contains Chinese characters, this sentence must be added
This statement is placed at the front of the program;
6.6 Please ensure that the project attribute encoding is "UTF-8", and the request page and response page encoding are consistent (can be background) UTF-8. You must ensure that the file
attribute and ContentType settings are consistent
The above introduces the code decoded by PHP by the encodeURIComponent function in componentname JS, including the content of componentname. I hope it will be helpful to friends who are interested in PHP tutorials.