JavaScript 字符串中的转义控制和非 ASCII 字符(高位)

Escape control and non-ASCII characters (high-bit) in JavaScript string?

本文关键字:字符 ASCII 高位 字符串 转义 控制 JavaScript      更新时间:2023-09-26

javascript中是否有一种简单的方法可以只转义某些范围的控制字符?

具体来说,我只想转义范围"''x00-''x1f"和"''x7f-''xff"(控制和高位字符)。在计算然后发送到 API 的哈希之前,我只需要转义这些字符。像 encodeURI() 和 escape() 这样的标准函数转义太多了。

基本上,我需要匹配 perl 的 uri_escape($text,"''x00-''x1f''x7f-''xff") 的功能。

function uri_escape( text, re ) {
    function pad( num ) {
        return num.length < 2 ? "0" + num : num;
    }
    return text.replace( re, function(v){
        return "%"+pad(v.charCodeAt(0).toString(16)).toUpperCase();
    });
}
uri_escape( "'u0015'u0012", /['x00-'x1f'x7f-'xff]/g );
//"%15%12"