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

Javascript replace() function adding strange characters

本文关键字:字符 添加 replace Javascript 函数      更新时间:2023-09-26

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

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

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

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

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

一些文本编辑器和ide将有一个显示隐藏字符的选项。如果你的编辑器有这个,它可以帮助你看到神秘字符在哪里,这样你就可以删除它们。

希望对你有帮助。