您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python的urllib.quote()和urllib.unquote()的等效Javascript函数

Python的urllib.quote()和urllib.unquote()的等效Javascript函数

好的,我想我将使用一组混合的自定义函数

编码:使用encodeURIComponent(),然后放回斜杠。 解码:对找到的所有%hex值进行解码。

这是我最终使用的内容的更完整变体(它也可以正确处理Unicode):

function quoteUrl(url, safe) {
    if (typeof(safe) !== 'string') {
        safe = '/';    // Don't escape slashes by default
    }

    url = encodeURIComponent(url);

    // Unescape characters that were in the safe list
    toUnencode = [  ];
    for (var i = safe.length - 1; i >= 0; --i) {
        var encoded = encodeURIComponent(safe[i]);
        if (encoded !== safe.charAt(i)) {    // Ignore safe char if it wasn't escaped
            toUnencode.push(encoded);
        }
    }

    url = url.replace(new RegExp(toUnencode.join('|'), 'ig'), decodeURIComponent);

    return url;
}


var unquoteUrl = decodeURIComponent;    // Make alias to have symmetric function names
@H_419_9@

请注意,如果在编码时(你并不需要“安全”的字符'/'认的Python),那么你可以使用内置的encodeURIComponent()decodeURIComponent()直接的功能

另外,如果字符串中包含Unicode字符(即,代码点> = 128的字符),则为了保持与JavaScript的兼容性encodeURIComponent(),Pythonquote_url()必须为:

def quote_url(url, safe):
    """URL-encodes a string (either str (i.e. ASCII) or unicode);
    uses de-facto UTF-8 encoding to handle Unicode codepoints in given string.
    """
    return urllib.quote(unicode(url).encode('utf-8'), safe)
@H_419_9@

并且unquote_url()将是:

def unquote_url(url):
    """Decodes a URL that was encoded using quote_url.
    Returns a unicode instance.
    """
    return urllib.unquote(url).decode('utf-8')
@H_419_9@
   

          

解决方法

是否有与Pythonurllib.quote()和等效的Javascript函数urllib.unquote()

我遇到的最接近的是escape()encodeURI()和和encodeURIComponent()(及其对应的非编码函数),但据我所知,它们不会对同一组特殊字符进行编码/解码。

谢谢,
卡梅伦

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
def quote_url(url, safe):
    """URL-encodes a string (either str (i.e. ASCII) or unicode);
    uses de-facto UTF-8 encoding to handle Unicode codepoints in given string.
    """
    return urllib.quote(unicode(url).encode('utf-8'), safe)
@H_419_9@

并且unquote_url()将是:

def unquote_url(url):
    """Decodes a URL that was encoded using quote_url.
    Returns a unicode instance.
    """
    return urllib.unquote(url).decode('utf-8')
@H_419_9@
  

          

解决方法

是否有与Pythonurllib.quote()和等效的Javascript函数urllib.unquote()

我遇到的最接近的是escape()encodeURI()和和encodeURIComponent()(及其对应的非编码函数),但据我所知,它们不会对同一组特殊字符进行编码/解码。

谢谢,
卡梅伦

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
def unquote_url(url):
    """Decodes a URL that was encoded using quote_url.
    Returns a unicode instance.
    """
    return urllib.unquote(url).decode('utf-8')
@H_419_9@
 

          

解决方法

是否有与Pythonurllib.quote()和等效的Javascript函数urllib.unquote()

我遇到的最接近的是escape()encodeURI()和和encodeURIComponent()(及其对应的非编码函数),但据我所知,它们不会对同一组特殊字符进行编码/解码。

谢谢,
卡梅伦

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

请注意,如果在编码时(你并不需要“安全”的字符'/'认的Python),那么你可以使用内置的encodeURIComponent()decodeURIComponent()直接的功能

另外,如果字符串中包含Unicode字符(即,代码点> = 128的字符),则为了保持与JavaScript的兼容性encodeURIComponent(),Pythonquote_url()必须为:

并且unquote_url()将是:

是否有与Pythonurllib.quote()和等效的Javascript函数urllib.unquote()

我遇到的最接近的是escape()encodeURI()和和encodeURIComponent()(及其对应的非编码函数),但据我所知,它们不会对同一组特殊字符进行编码/解码。

谢谢,
卡梅伦

请注意,如果在编码时(你并不需要“安全”的字符'/'认的Python),那么你可以使用内置的encodeURIComponent()decodeURIComponent()直接的功能

另外,如果字符串中包含Unicode字符(即,代码点> = 128的字符),则为了保持与JavaScript的兼容性encodeURIComponent(),Pythonquote_url()必须为:

def quote_url(url, safe):
    """URL-encodes a string (either str (i.e. ASCII) or unicode);
    uses de-facto UTF-8 encoding to handle Unicode codepoints in given string.
    """
    return urllib.quote(unicode(url).encode('utf-8'), safe)
@H_419_9@

并且unquote_url()将是:

def unquote_url(url):
    """Decodes a URL that was encoded using quote_url.
    Returns a unicode instance.
    """
    return urllib.unquote(url).decode('utf-8')
@H_419_9@
  

          

解决方法

是否有与Pythonurllib.quote()和等效的Javascript函数urllib.unquote()

我遇到的最接近的是escape()encodeURI()和和encodeURIComponent()(及其对应的非编码函数),但据我所知,它们不会对同一组特殊字符进行编码/解码。

谢谢,
卡梅伦

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
def unquote_url(url):
    """Decodes a URL that was encoded using quote_url.
    Returns a unicode instance.
    """
    return urllib.unquote(url).decode('utf-8')
@H_419_9@
 

          

解决方法

是否有与Pythonurllib.quote()和等效的Javascript函数urllib.unquote()

我遇到的最接近的是escape()encodeURI()和和encodeURIComponent()(及其对应的非编码函数),但据我所知,它们不会对同一组特殊字符进行编码/解码。

谢谢,
卡梅伦

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

并且unquote_url()将是:

是否有与Pythonurllib.quote()和等效的Javascript函数urllib.unquote()

我遇到的最接近的是escape()encodeURI()和和encodeURIComponent()(及其对应的非编码函数),但据我所知,它们不会对同一组特殊字符进行编码/解码。

谢谢,
卡梅伦

并且unquote_url()将是:

def unquote_url(url):
    """Decodes a URL that was encoded using quote_url.
    Returns a unicode instance.
    """
    return urllib.unquote(url).decode('utf-8')
@H_419_9@
 

          

解决方法

是否有与Pythonurllib.quote()和等效的Javascript函数urllib.unquote()

我遇到的最接近的是escape()encodeURI()和和encodeURIComponent()(及其对应的非编码函数),但据我所知,它们不会对同一组特殊字符进行编码/解码。

谢谢,
卡梅伦

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

是否有与Pythonurllib.quote()和等效的Javascript函数urllib.unquote()

我遇到的最接近的是escape()encodeURI()和和encodeURIComponent()(及其对应的非编码函数),但据我所知,它们不会对同一组特殊字符进行编码/解码。

谢谢,
卡梅伦

python 2022/1/1 18:35:47 有241人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶