我正在寻找一种将JavaScript字符统一转换为二进制的方法。我面临的一个问题是,我不能正确转换unescape函数中使用的字符串
document.write("HI"); ==> HI (case 1)
document.write("x48x49"); ==> HI (case 2)
document.write(unescape("%48%49")); ==> HI (case 3)
案例1:转换"HI"对二进制生成:
0100100001001001
案例2:转换"x48x49"对二进制生成:
0100100001001001
案例3:转换"%48%49"对二进制生成:
001001010011010000111000001001010011010000111001
我明白情况3中发生了什么。它将每个字符转换为二进制,而没有意识到这些字符是以十六进制表示的。如何在不需要任何预处理的情况下使情况3具有与情况1和情况2相同的二进制表示?
decodeURIComponent
是合适的函数。已弃用decode
功能。下面是一个例子。
如果你把%48%49
输入并点击"转换"按钮,它会给你第二种情况。
var test = document.querySelector("#test");
var btn = document.querySelector("#btn");
var result = document.querySelector("#result");
btn.addEventListener("click", function() {
var value = decodeURIComponent(test.value);
var resultText = "";
for (i = 0; i < value.length; i++) {
resultText += value.charCodeAt(i).toString(2);
}
result.innerText = resultText;
});
<input type="text" id="test">
<button id="btn">Convert</button>
<p id="result"></p>