我用不同的语言编写自己的函数,如果可能,我希望它能提供相同的结果。
答案 0 :(得分:8)
您可以在MDC documentation:
中找到相关信息
encodeURIComponent
转义除以下所有字符外的所有字符:
字母,十进制数字,- _ . ! ~ * ' ( )
答案 1 :(得分:4)
简短回答,您可以匹配所有UTF-16代码单元encodeURIComponent
将使用以下代码进行编码:
/[^a-zA-Z0-9\-_.!~*'()]/g
但是,规范说它用4字节UTF-8编码处理补充代码点。
答案很长,ES 262说
15.1.3.4 encodeURIComponent(uriComponent)
encodeURIComponent函数计算URI的新版本,其中某些字符的每个实例都被表示字符的UTF-8编码的一个,两个,三个或四个转义序列替换。 当使用一个参数uriComponent调用encodeURIComponent函数时,将执行以下步骤:
让componentString为ToString(uriComponent)。
让unescapedURIComponentSet成为一个String,其中包含每个有效字符的一个实例 的 uriUnescaped 强>
- 醇>
返回调用Encode(componentString,unescapedURIComponentSet)的结果
因此定义了uriUnescaped
uriUnescaped ::: uriAlpha | DecimalDigit | uriMark
,其中
uriAlpha :::其中一个是一个问题,而是一个问题,这是一个问题,而且是一个问题,这是一个问题。
uriMark ::: - _之一。 ! 〜*'()
DecimalDigit ::: 0之一1 2 3 4 5 6 7 8 9