JavaScript不解码参数

时间:2017-12-06 14:16:27

标签: javascript jquery

所以从textarea我采用短代码%91samurai id="19"%93它应该是[samurai id="19"]

var not_decoded_content = jQuery('[data-module_type="et_pb_text_forms_00132547"]')
.find('#et_pb_et_pb_text_form_content').html();

但是当我尝试解码%91%93

self.content = decodeURI(not_decoded_content);

我收到错误:

  

未捕获URIError:URI格式错误

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

编码无效。如果您无法修复what-system-produce-they到正确生成%5B和%5D,那么您唯一的选择是自己进行替换:将所有%91替换为字符91,这是'[',然后将所有%93替换为字符93,即']'。

请注意,javascript String Replace as-is不会执行“替换所有实例”。如果你需要,那么创建一个循环(当它包含(...)做一个替换),或在互联网上搜索javascript replace all时,你会发现很多结果。

最后一点,我习惯使用decodeURIComponent(...)。如果您可以将what-system-produce-they设置为正确生成%5B和%5D,但仍然会出现该错误,请尝试使用decodeURIComponent(...)代替decodeURI (...)。

答案 1 :(得分:0)

您尝试解码的字符串不是URI。请改用decodeURIComponent()

<强>更新

嗯,这实际上不是问题,问题是%91%93

encodeURI('[]')

给出%5b%5d,它看起来像编码的这个字符串使用了十进制而不是十六进制值。

Decimal 91 = hex 5b
Decimal 93 = hex 5d

再次使用 hex

进行尝试
decodeURI('%5bsamurai id="19"%5d') == '[samurai id="19"]'

答案 2 :(得分:0)

我知道这不是您想要查看的解决方案,但是您可以尝试对%E2%80%98使用“%91”而%E2%80%9C使用“%93”吗?

%91%93control characters的一部分,html不喜欢解码(出于我之外的原因)。简单地说,它们不是普通的HTML字符,可以用来播放HTML。