Using JavaScript to transfer values to the backend code through URL is a frequently used method, but when transferring Chinese characters, the problem of incomplete characters or garbled characters often occurs. The reason is that the encoding method of the client IE browser is GB2312. (The default setting for the Simplified Chinese version of WINDOWS), while the background C# code uses utf8 encoding (the default configuration for creating WEB projects).
There are many solutions on the Internet to solve this problem, such as changing the encoding method of web.config to GB2312, encoding first and then transmitting through escape on the client. Personal experience is not very ideal or some special characters are not supported. After comparison, I decided to use encodeURIComponent to encode on the client side and then pass the value, except "/" which is not supported (but in actual development, it is rarely necessary to pass this value. If this is the case, just add another layer of judgment.
The help documentation for encodeURIComponent is as follows:
encodeURIComponent method
encodes a text string into a valid component of a Uniform Resource Identifier (URI)
encodeURIComponent( encodedURIString )
Represents the required encodedURIString parameter. An encoded URI component.
Description
The encodeURIComponent method returns an encoded URI. If you pass the encoding result to decodeURIComponent, the original string will be returned. Note that if the string represents a path, such as /folder1/folder2/default.html, the slashes in it will also be encoded, so that the encoding result will be invalid when sent as a request to the web server. If the string contains more than one URI component, use the encodeURI method for encoding.
Requires
Version 5.5
See the
decodeURI method | The decodeURIComponent method
applies to: Global objects
I made a small example to show the effect
Default.aspx code: