2013-03-19 55 views
0

考慮下面的JavaScript:的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腳本,沒有任何問題。

回答

3

%EF%BF%BC是一個由三個URL編碼字符組成的序列。

您顯然看不到字符串中的任何意外字符。這是因爲字符序列%EF%BF%BC是不可見的。

它實際上是一個UTF-8字節順序標記序列。這個序列通常在UTF-8編碼文本文件的開頭。當你從另一個文件進行復制+粘貼時,他們可能進入了你的代碼。

擺脫它們最快捷的方法是找到複製+粘貼的代碼位,刪除問題兩側的字符,然後重新鍵入它們。根據您的編輯器,您可能會發現刪除行爲很奇怪,因爲它會刪除隱藏的字符。

某些文本編輯器和IDE可以顯示隱藏字符的選項。如果你的編輯有這個,它可以幫助你看到神祕人物的位置,所以你可以刪除它們。

希望有所幫助。

+1

+1。 'IDE可以選擇顯示隱藏字符@sam:此外,您可以將編碼設置爲ANSI,以便更容易找到它們,然後在刪除不需要的字符後將編碼恢復爲無BOM的UTF-8。 – JFK 2013-03-19 22:14:40

+0

天才!有趣的是,我的IDE(Coda 2)有一個「Show Invisible Characters」選項(我經常用於這種情況),但是當我打開它時什麼也沒有顯示。只有當我將編碼設置爲「Western(ASCII)」時,纔會出現奇怪的字符!刪除!現在它運行良好。唯一的問題是他們從哪裏來?我很確定我手中輸入了整個劇本...... – Sam 2013-03-20 00:10:40