Javascript unescape() 与 Python urllib.unquote()

2023-11-26

从阅读各种帖子来看,这似乎是 JavaScript 的unescape()相当于Pythonurllib.unquote(),但是当我测试两者时,我得到不同的结果:

在浏览器控制台中:

unescape('%u003c%u0062%u0072%u003e');

output: <br>

在Python解释器中:

import urllib
urllib.unquote('%u003c%u0062%u0072%u003e')

output: %u003c%u0062%u0072%u003e

我希望 Python 也能回归<br>。关于我在这里缺少什么有什么想法吗?

Thanks!


%uxxxx is a 非标准URL编码方案不支持urllib.parse.unquote()(Py 3)/urllib.unquote() (Py 2).

它只是 ECMAScript ECMA-262 第三版的一部分;该格式被 W3C 拒绝,并且从未成为 RFC 的一部分。

您可以使用正则表达式来转换此类代码点:

try:
    unichr  # only in Python 2
except NameError:
    unichr = chr  # Python 3

re.sub(r'%u([a-fA-F0-9]{4}|[a-fA-F0-9]{2})', lambda m: unichr(int(m.group(1), 16)), quoted)

这解码了%uxxxx%uxxECMAScript 第三版可以解码。

Demo:

>>> import re
>>> quoted = '%u003c%u0062%u0072%u003e'
>>> re.sub(r'%u([a-fA-F0-9]{4}|[a-fA-F0-9]{2})', lambda m: chr(int(m.group(1), 16)), quoted)
'<br>'
>>> altquoted = '%u3c%u0062%u0072%u3e'
>>> re.sub(r'%u([a-fA-F0-9]{4}|[a-fA-F0-9]{2})', lambda m: chr(int(m.group(1), 16)), altquoted)
'<br>'

但如果可能的话,您应该避免完全使用编码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript unescape() 与 Python urllib.unquote() 的相关文章

随机推荐

  • 如何将 SQL 子查询转换为联接

    我有两个具有 1 n 关系的表 内容 和 版本内容数据 例如 文章实体和该文章创建的所有版本 我想创建一个显示每个 内容 的顶级版本的视图 我使用这个查询 带有一个简单的子查询 SELECT t1 id t1 title t1 conten
  • IE 的默认 CSS 值 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在开发一个 Web 应用程序 但它对 Firefox 不太友好 设计是在我加入公司之前 2 年完成的 我遇到了一些 CSS 问题 并且无法使用
  • 如何在 d3.js 中查找点是否在多边形内部

    我知道有手动方法可以做到这一点 请参阅多边形中的点 但是在 d3 js 中是否有一种本地方法可以确定一个点是否在多边形内部 Update 这现在是一部分d3 多边形 d3 polygonContains polygon point
  • 什么会在 C 中产生词法错误?

    除了不关闭评论之外 什么构成 C 中的词法错误 这里有一些 abc
  • 检查用户名可用性

    我有一个用户登录表单 我想在 user field 失去焦点之后立即检查数据库中是否有用户名 我可以使用 javascript 覆盖表单上的此事件 但无法从 javascipt 代码发送 Ruby AJAX 请求 有没有什么方法可以检查用户
  • 如何从数组动态创建 JavaScript 变量?

    假设我有一个变量名称数组 var varNames new Array name1 name2 name3 我如何创建var name1 var name2 and var name3只需循环遍历varNames array 这将创建全局变
  • 有什么命令可以让我了解 Hbase 中表的大小吗?

    有什么命令可以让我了解 Hbase 中表的大小吗 我使用 Hbase 保存来自 Nutch 的爬网数据 如果您在 hadoop 上运行 hbase 可以使用以下命令 hadoop fs du path path 必须替换为hbase roo
  • 如何使用正确的参数在 C 中调用 execl() ?

    我有 vlc 重现视频的程序 如果我在 shell 中输入 home vlc home 我的电影 我想看的电影 mkv 它打开并再现电影 但是 当我运行以下程序时 include
  • Visual Studio 2010“分配给局部变量”功能?

    我很喜欢 Eclipse 中的 分配给字段 功能 基本上 当我有 getString and I type Ctrl 2 Eclipse converts this into String getString getString 这在 VS
  • 禁用 EditText 可编辑性和焦点(如 TextView)

    有没有办法制作EditText行为如TextView在 Android 中 首选 XML 我已经尝试过以下方法 android editable false android focusable false android focusable
  • Git 子模块在签出另一个分支时删除

    我的 Git 存储库中有几个具有功能的分支 每个功能都是一些外部存储库 作为子模块插入 我应该怎么做才能正确地在有子模块和没有子模块的分支之间进行切换 Example git init git commit m empty allow em
  • JSF2.0 - 具有可选方法表达式的复合组件

    我正在实现一个复合组件 但发现了一个问题 但没有找到解决方案 我指定了页面作者可以传递或不传递的属性 但无法指定方法属性 Action 的方法表达式 如果未传递该属性 则复合组件不会使用该方法属性在composite implementat
  • QT Creator 添加了 -Xarch

    我之前使用的是带有旧 GCC 的 QT Creator 现在我更新到了 4 8 版本 但是 QT Creator 添加了一个 Xarch x86 64 选项 GCC 4 8 告诉我 g error unrecognized command
  • iframe 未在 webview android 中加载

    我有一个网络视图 一切工作正常 但当我打开一个包含 iframe 的页面时 iframe 不可见 需要什么具体设置吗 首先添加硬件加速并将以下行添加到您的 webView webView setWebChromeClient new Web
  • MongoDB:使用 $concat 更新字段值时出现问题

    我正在尝试通过将 MongoDB 集合中的字段与文字字符串连接起来来更新该字段的值 除此之外 该字段是一个整数 我想在前面添加一个 0 这样它就会变成一个字符串 我读到我不能在单个更新指令中使用该字段的旧值 所以我使用forEach met
  • 在构建服务器上时,TFS 未将引用的程序集部署到测试目录

    我有编码 UI 测试项目 它引用了解决方案中的其他程序集 不知何故 某些程序集没有被复制到TestResults Out目录 而其他则被复制 所有组件都有Copy Local option true 虽然不知道这是否真的重要 并且在其他选项
  • 从基类扩展委托

    我有一个 objc 基类 protocol BaseClassDelegate interface BaseClass NSObject property nonatomic weak id
  • 在 Windows 8 CP 中设置选定 ListViewItem 的样式

    我想更改下面链接的图片中所选项目的边框外观 我已经在 msdn com 和互联网上查找过 但没有发现任何有用的东西 我怎样才能做到这一点 选择外观是 ListViewItem 的 ControlTemplate 的一部分 要修改整个 Lis
  • 有没有一种更简单的方法来初始化 List>,就像 Dictionary 一样?

    其实我需要类似的东西List
  • Javascript unescape() 与 Python urllib.unquote()

    从阅读各种帖子来看 这似乎是 JavaScript 的unescape 相当于Pythonurllib unquote 但是当我测试两者时 我得到不同的结果 在浏览器控制台中 unescape u003c u0062 u0072 u003e