Home > Web Front-end > JS Tutorial > body text

Hexadecimal characters in JavaScript (improved)_javascript skills

WBOY
Release: 2016-05-16 17:59:08
Original
1168 people have browsed it

Original code:

Copy code The code is as follows:

//Convert text to hexadecimal
function textToSix(str) {
return escape(str).replace(/%/g, function () {
return "\";
}).toLowerCase();
}

Improved:
Copy code The code is as follows:

//Convert text to hexadecimal
function textToHex(str) {
//Escape outputs %u**** format when encoding unicode values ​​other than 0-255, for example: % u6267%u624b%u6cea%u773c
//Replace the % with hexadecimal
if (typeof str == "string") {
return escape(str).replace(/ %/g, function () {
return "\";
}).toLowerCase();
} else {
return null;
}
}

Mainly adds a verification to verify whether it is a string.

After perfecting this method, I thought I should improve the following method:
Copy code The code is as follows:

//Represent hexadecimal as text
function sixToText(str) {
return unescape(str);
}

The original intention is to convert characters such as "unnn" back to text. In fact, just look at the principle of the unescape method (working principle: by finding character sequences in the form %xx and %uxxxx (x represents a hexadecimal number), and replacing such character sequences with Unicode characters u00xx and uxxxx Decoding. Explanation from Baidu Encyclopedia). You will know that I am completely unnecessary. Because the browser can parse hexadecimal characters. For example:

In IE9:

testChar2IE9

In Chrome:

testChar2Chrome

Let’s add another little gain. In fact, when parsing the characters I replaced, my initial idea was to replace the "" character back with "%", and then use the unescape decoding function to parse the characters. However, when I wanted to replace "" with "%", I discovered the following interesting phenomenon: if the character "" is not followed by "t", "n" can be combined with t. If they are combined to form escape characters, they will be ignored by the browser. Let’s verify my conclusion with experiments:

Debugging in IE9:

testChar

Debug under Chrome:

testCharChrome

A variable is defined here. The variable contains some characters "" that may rarely appear in normal times. When debugging, did you check the above prompt? The browser intelligently ignores characters in special positions. Therefore, when you put some seemingly ordinary characters (such as file paths, etc.) in js variables, the output results may not be expected.

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template