Javascript replace()函数添加奇怪的字符

时间:2013-03-19 20:46:59

标签: javascript jquery replace fancybox character

考虑以下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脚本,没有任何问题。

1 个答案:

答案 0 :(得分:3)

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

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

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

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

某些文本编辑器和IDE可以选择显示隐藏的字符。如果您的编辑有这个,它可以帮助您查看神秘字符的位置,以便您可以删除它们。

希望有所帮助。