0

考虑以下 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);显示预期的 url 字符串。但是当我将该变量传递给 jQuery Fancybox时,如下所示:

jQuery.fancybox.open(fullImg);

有些东西会在字符串中添加字符,如下所示:

http://example.com/%EF%BF%BCfull_img/hey.jpg

这是%EF%BF%BC从哪里来的?它是什么?最重要的是,我该如何摆脱它?

其他一些线索:这是一个 Drupal 7 站点,运行 jQuery 1.5.1。我在网站的其他地方使用相同的 Fancybox 脚本,没有任何问题。

4

1 回答 1

3

%EF%BF%BC是三个 URL 编码字符的序列。

您显然看不到字符串中的任何意外字符。那是因为字符序列%EF%BF%BC是不可见的。

它实际上是一个 UTF-8 字节顺序标记序列。此序列通常出现在 UTF-8 编码文本文件的开头。当您从另一个文件复制+粘贴时,他们可能会进入您的代码。

摆脱它们的最快方法是找到复制+粘贴的代码位,删除问题两侧的字符,然后重新键入它们。根据您的编辑器,您可能会发现删除的行为很奇怪,因为它会删除隐藏的字符。

一些文本编辑器和 IDE 将具有显示隐藏字符的选项。如果你的编辑有这个,它可能会帮助你查看神秘人物的位置,以便你可以删除它们。

希望有帮助。

于 2013-03-19T20:59:06.463 回答