Home > Article > Web Front-end > URL special characters passing parameters solution_javascript skills
Hexadecimal value
1. URL medium means space +
2. Space spaces in URL can be encoded with numbers or encoded
3. / separates directories and subdirectories /
4. ? Separate the actual URL and parameters?
5. % specifies the special character %
6. # Represents a bookmark #
7. & Separator between parameters specified in the URL&
8. = Value of the specified parameter in the URL =
Solution:
replace() method If you directly use str.replace("-","!"), it will only replace the first matching character.
And str.replace(/-/g,"!") can replace all matching characters (g is a global flag).
replace()
The replacement character variables in js are as follows:
data2=data2.replace(/%/g,"%");
data2=data2.replace(/#/g,"#");
data2=data2.replace(/&/ g,"&");
Some other information. . . For reference only. . .
When using url to pass parameters, some parameters or URL addresses with Chinese names (or containing special characters) are often passed, and conversion errors will occur during background processing. In some delivery pages, GB2312 is used, while in the receiving page, UTF8 is used, so the received parameters may be inconsistent with the original ones. The URL encoded using the server-side urlEncode function will have different results than the URL encoded using the client-side java's encodeURI function.
Java encoding text involves 3 functions: escape, encodeURI, encodeURIComponent, corresponding to 3 decoding functions: unescape, decodeURI, decodeURIComponent
Encoding method in java:
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 . 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, when the charset of the original page and the target page is the same), you only need to 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.
In addition, encodeURI/encodeURIComponent was introduced after java1.5, and escape was available in java1.0.
1. You need to use encodeURIComponent when passing parameters, so that the combined url will not be truncated by special characters such as #.
For example: < language="java">write('http://passport.baidu.com/?logout&aid=7&u=' encodeURIComponent("http://cang .baidu.com/bruce42") '">Exit');>
2. You can use encodeURI as a whole when performing url jump
For example: Location.href=encodeURI("http://cang.baidu.com/do/s?word=Baidu&ct=21");
3. You can use escape when using data in js
For example: history record in collection.
4. When escape encodes unicode values other than 0-255, it outputs the %u**** format. In other cases, the encoding results of escape, encodeURI, and encodeURIComponent are the same.
The most commonly used one should be encodeURIComponent, which converts Chinese, Korean and other special characters into url encoding in utf-8 format. Therefore, if you need to use encodeURIComponent to pass parameters to the background, you need background decoding to support utf-8. (The encoding method in the form is the same as the encoding method of the current page)
There are 69 characters that are not encoded by escape: *, ,-,.