随机unicode插入到我的下划线模板中

时间:2013-02-25 16:49:13

标签: javascript html templates unicode underscore.js

因此我的模板中插入了一些unicode,导致我的iframe src失败。

字符串在javascript变量中显示为http://sand-dynamic.adpinr.com/social_stream/p_unit/1204042,但变为

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是如何在那里实现的。

1 个答案:

答案 0 :(得分: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;

这不是解决这个问题的好方法。如果你不知道char来自哪里,那么这只是你代码中其他地方需要修复的bug的标志。