2014-11-08 68 views
0

我使用此鏈接通過谷歌加分享我的網頁。Google plus url sharing

https://plus.google.com/share?url=http%3A%2F%2Fexample.com%2Fcompany%20name%2search 

所以我使用encodeURIComponent獲取此URL(也嘗試使用encodeURI)。 但當共享框出現鏈接不正確。它是:

http://example.com/company 

Forsure我不能用,例如,「改變「 - 」(或其他符號),但我在AngulaJs應用程序中使用值從URL正確初始化,這將是更好地使用原生的方式。

我的錯是什麼或是否有任何本地方法來解決這個問題?

回答

1

%20是一個編碼的空間,它不是一個有效的URL字符。最常用的字符而不是空格是-

最好的方法是將輸入標準化爲一個ID,您將使用它來查詢您自己的數據庫。例如。 Bob's Bar & Grill將得到處理,以bobs-bar-grill,然後你就查詢數據庫發現:

{ 
    "id": "bobs-bar-grill", 
    "name": "Bob's Bar & Grill" 
} 

這都使你的網址,乾淨,更好的保護您從URL中隨機用戶內容安全的角度來看。

作爲最後的手段,您可以對路徑進行雙重編碼,以便Google在對URL解碼一次後仍然具有編碼空格。

var url = "http://example.com/company name"; 
encodeURI(encodeURI(url)); 
// "http://example.com/company%2520name" 

而谷歌會向用戶發送http://example.com/company%20name

+0

它不是一個恆定的存在(不是「我的資料」),但有些供應商名稱。所以我想用一些本地的方式來編碼/解碼網址。當然,我可以添加一些象' - '的符號。但它是angularJs應用程序,我在初始化應用程序時使用來自url的值。所以有必要在之後刪除這個' - '符號。 – BotanMan 2014-11-08 20:42:15

+0

我已經用推薦的選項和最後的手段更新了答案。 – abraham 2014-11-10 21:19:15

+0

我已經自己修復了。 以任何方式謝謝。我會標記你的答案是正確的。 – BotanMan 2014-11-11 10:09:26