2014-01-07 26 views
1

我有一些從HTML字段(使用.text())讀取用戶輸入的javascript。然後,我通過URL(FMP協議,而不是HTTP,但執行相同的編碼)發送該文本。多個空格的奇怪的Javascript網址編碼結果

當我在多個空格(彼此相鄰)中輸入時,我得到一個顯然很奇怪的URL編碼結果。因此,這裏有與所得到的編碼(一個具有一個空間,一個具有兩個空格)的一些例子:

Bob Bob => Bob%20Bob 
Bob Bob => Bob%20%c2%a0Bob 

%C2是「A」超過一個符號,而%A0似乎是一個空白?

問題在於,在接收端,它不能正確解碼爲兩個空格,而是作爲其他一些奇怪的字符。這裏有一些示例代碼:

$('.newEntry').on('blur', function() {  
    var text = encodeURIComponent ($('.newEntry').text()) ; 

     if (currentComment != text) { 
      window.location = 'fmp://blar.com/Sol?script=AddComment&$commentID=new&$commentText=' + text ; 
    }   
}); 

有人可以幫助解釋,而雙空間通過這種方式來?由於這是用戶的自由形式文本輸入,所以我們很可能會得到雙倍空間,並且他們正在輸入筆記以供其他人閱讀。

謝謝, Ĵ

+0

您使用哪個瀏覽器進行測試?通過簡單的文本輸入和最新的穩定Chrome瀏覽器,我可以像預期的那樣重複使用'%20'。 – diolemo

+0

它是從FileMaker內部使用的Safari。 – Cronk

回答

2

根據https://en.wikipedia.org/wiki/Percent-encoding

通用URI語法的任務在於提供一種用於在URI字符數據的表示新的URI方案必須,實際上,從表示字符未經翻譯的無保留集合,並應根據UTF-8將所有其他字符轉換爲字節,然後對這些值進行百分比編碼。

既然你還沒有使用的空間" "但不間斷空間" "\u00a0)這是很自然,它得到了編碼爲兩個字節,%c2%a0

問題在於,在接收端,它不能正確解碼爲兩個空格,而是像其他一些奇怪的字符。

是。修復解碼。

+0

是的,這當然似乎是我們的情況發生了什麼。感謝您的鏈接和解釋。我將不得不進一步審查。 – Cronk