The example in this article describes the solution to the problem of Chinese Post transmission in JQuery, that is, the garbled ajax and jquery.ajax Chinese parameter post transmission garbled processing method. Share it with everyone for your reference. The specific analysis is as follows:
Question 1:
When I was working on a project today, I needed to use Ajax. When I used GET to pass Chinese parameters, I only needed to set the page encoding to GB2312 in the background program so that Chinese could be displayed normally. However, this time due to the large number of form items , it is not suitable to be delivered by GET method, and can only be transmitted by POST method. However, I found that when the encoding is set to GB2312 in the background program, Chinese characters are still displayed as garbled characters. After some research the problem was finally solved.
Solution:
The method to solve this problem is very simple. You only need to use the escape() function when processing parameters in JS, and there is no need to use unescape() to decode. This method is suitable for POST and GET methods. Specific Ajax code I won’t give an example here, but here is the code for using the escape() function to process parameters:
Usually when we process Ajax, we will directly obtain the parameter value here. In order to make the Chinese parameters not garbled, we only need to use the escape() function to process the parameters.
Question 2:
When the website page is not utf-8 encoded, the Chinese submitted by ajax will become garbled.
The solution is as follows:
Find contentType:application/x-www-form-urlencoded in jquery.js and change it to contentType:application/x-www-form-urlencoded; charset=UTF-8.
Cause: When charset is not specified, jquery uses ISO-8859-1, ISO8859-1, usually called Latin-1. Latin-1 includes additional characters indispensable for writing all Western European languages. jquery's ajax does not consider the issue of internationalization at all, but uses the European character set, so garbled characters appear when transmitting Chinese
I have been using the Prototype framework a long time ago. I have used it under .net-GB2312 or jsp tutorial-utf8, and I have never encountered any character encoding problems. So I downloaded both the Prototype and JQuery codes and opened them to study the reasons.
The difference is that JQuery’s default contentType: application/x-www-form-urlencoded
The Prototype is contentType:application/x-www-form-urlencoded; charset=UTF-8
This is the reason why JQuery is garbled. When the character set is not specified, ISO-8859-1 is used
ISO8859-1, usually called Latin-1. Latin-1 includes additional characters indispensable for writing all Western European languages.
JQuery’s Ajax did not consider the issue of internationalization at all and used the European character set, which caused the problem of garbled characters when transmitting Chinese.
Our UTF-8 can solve this problem.
Ultimately, it means that you need to modify the JQuery code and explicitly declare that the contentType uses the utf-8 character set, which can solve the problem of GB2312 Chinese transmission.
You only need to simply modify the JQuery code and add charset=UTF-8. In this way, there is no need to change web.config or change the encoding on the page, and there is no need to use escapc. (str) is then decoded on the server side. How it is conveyed in English is also conveyed in Chinese.
Here is a simple code to test:
test.html page code:
AjaxTest.aspx processing page:
In addition, since the default Chinese character encoding of Ajax is utf-8, a safer way is to ensure that the unified encoding format of the pages involved is utf-8.
I hope this article will be helpful to everyone’s Ajax programming based on jQuery.