所以从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格式错误
我该如何解决这个问题?
答案 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
和%93
是control characters的一部分,html不喜欢解码(出于我之外的原因)。简单地说,它们不是普通的HTML字符,可以用来播放HTML。