考虑以下Javascript:
var previewImg = 'http://example.com/preview_img/hey.jpg';
var fullImg = previewImg.replace('preview','full');
我希望fullImg
的值为:
http://example.com/full_img/hey.jpg
事实上,它有点......运行alert(fullImg);
会显示预期的网址字符串。但是当我将该变量传递给jQuery Fancybox时,就像这样:
jQuery.fancybox.open(fullImg);
有些东西会在字符串中添加字符,如下所示:
http://example.com/%EF%BF%BCfull_img/hey.jpg
%EF%BF%BC
来自哪里?它是什么?最重要的是,我该如何摆脱它?
其他一些线索:这是一个运行jQuery 1.5.1的Drupal 7站点。我在网站的其他地方使用相同的Fancybox脚本,没有任何问题。
答案 0 :(得分:3)
%EF%BF%BC
是由三个URL编码的字符组成的序列。
您显然无法在字符串中看到任何意外字符。那是因为字符序列%EF%BF%BC
是不可见的。
它实际上是一个UTF-8字节顺序标记序列。此序列通常出现在UTF-8编码的文本文件的开头。当你从另一个文件中复制+粘贴时,他们可能会进入你的代码。
摆脱它们的最快方法是找到复制+粘贴的代码,删除问题任一侧的字符,然后重新键入它们。根据您的编辑器,您可能会发现删除行为奇怪,因为它删除了隐藏的字符。
某些文本编辑器和IDE可以选择显示隐藏的字符。如果您的编辑有这个,它可以帮助您查看神秘字符的位置,以便您可以删除它们。
希望有所帮助。