我有角應用程序,我想通過加號+在查詢字符串,如:角網址加號轉換爲空間
http://localhost:3000/page?name=xyz+manwal
當我打這個URL其轉換爲:
http://localhost:3000/page?name=xyz%20manwal
其中%指的是空間。我怎樣才能防止這種轉換?
我有角應用程序,我想通過加號+在查詢字符串,如:角網址加號轉換爲空間
http://localhost:3000/page?name=xyz+manwal
當我打這個URL其轉換爲:
http://localhost:3000/page?name=xyz%20manwal
其中%指的是空間。我怎樣才能防止這種轉換?
我找到了解決方案,並將其發佈供將來參考。 Angular js將+
符號轉換爲%2B
。
下面的代碼防止:
.config([
'$provide', function($provide) {
$provide.decorator('$browser', function($delegate) {
let superUrl = $delegate.url;
$delegate.url = (url, replace) => {
if(url !== undefined) {
return superUrl(url.replace(/\%2B/g,"+"), replace);
} else {
return superUrl().replace(/\+/g,"%2B");
}
};
return $delegate;
});
}
])
這是一個很常見的問題。您可以在application/x-www-form-urlencoded請求中正常傳遞它。沒有其他請求將能夠正確解析+。他們總是將它解析爲%20而不是%2B。
您需要手動操作查詢參數時,有2種方式:
欲瞭解更多信息,你應該reffer到HTHE以下堆棧溢出問題Android: howto parse URL String with spaces to URI object?和URL encoding the space character: + or %20?
這1A中常見的問題。該URL使用+
字符來分隔兩個單詞。爲了在參數值中使用+
字符,需要在將參數值作爲URL的一部分添加之前對其進行編碼。 Javascript/TypeScript爲該特定目的提供了一個encodeURI()
函數。
URL編碼將字符轉換爲可通過Internet傳輸的格式,可以傳輸 。 [w3Schools Reference]
這裏是你如何解決這個問題:
let encodedName = encodeURI('xyz+manwal');
let encodedURI = 'http://localhost:3000/page?name='+encodedName;
//.. OR using string interpolation
let encodedURI = `http://localhost:3000/page?name=${ encodedName }`;
以同樣的方式,可以解碼使用decodeURI()
方法的參數。
let decodedValue = decodeURI(encodedValue);
爲什麼你需要嗎? –
我想在'xyz + manwal'中使用名稱值,在給定的URL中保存'xyz manwal'。 – Manwal
它只是一個URL,無論你在哪裏閱讀,它都應該被正確解析爲一個加號,你不能在URL中使用加號。閱讀[本](https://stackoverflow.com/questions/2678551/when-to-encode-space-to-plus-or-20) –