0

所以在我的模板中插入了一些 unicode,导致我的 iframe src 失败。

该字符串似乎http://sand-dynamic.adpinr.com/social_stream/p_unit/1204042在 javascript 变量中,但变成

http://sand-dynamic.adpinr.com%e2%80%ac/social_stream/p_unit/1204042

显然,但我不知道为什么。我试图对变量执行此操作:

obj.URL = unescape(JSON.parse('"' + TL.getURL() + '/social_stream/p_unit/' + obj.id + '"');

但这似乎没有帮助。我的模板只是这样称呼它

<iframe frameborder="0" width="<%= width %>" height="<%= height %>" marginheight="0" marginwidth="0" target="_blank" scrolling="no" src="<%= URL %>"></iframe>

关于如何摆脱多余的 unicode 有什么想法吗?它阻止我访问浏览器中的 URL,它只是用谷歌搜索它。我希望它动态删除任何额外的 unicode,因为我不知道该 unicode 是如何到达那里的。

4

1 回答 1

0

%e2%80%acU+202C。不知何故,那个字符进入了你的 URL 变量。该字符是不可见的,这就是为什么在打印出变量的值时看不到它,但在字符串被 URL 编码时看到它的原因。您需要编辑字符串以删除该字符。我无法提供更多信息,因为我不知道该值来自何处。

如果你真的想删除非 ASCII 范围字符,你总是可以这样做:

var url = ...
var strippedURL = '';
for (var i = 0, l = url.length; i < l; i++){
  if (url.charCodeAt(i) < 256) strippedURL += url[i];
}
return strippedURL;

不过,这不是解决这个问题的好方法。如果您不知道该字符的来源,那么这只是表明您的代码中的其他地方存在需要修复的错误。

于 2013-02-25T16:55:37.267 回答