2

javascriptで特定の範囲の制御文字のみをエスケープする簡単な方法はありますか?

具体的には、"\x00-\x1f" と "\x7f-\xff" (制御文字と上位ビット文字) の範囲だけをエスケープしたいと考えています。API に送信されるハッシュを計算する前に、これらの文字だけをエスケープする必要があります。encodeURI() や escape() などの標準関数はエスケープが多すぎます。

基本的に、perl のuri_escape($text,"\x00-\x1f\x7f-\xff")の機能と一致させる必要があります。

4

1 に答える 1

0
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"
于 2012-06-18T17:41:11.137 に答える