前段時間工作需求需要調用第三方的API四苇,在GET請求中有用戶帳號之類的參數(shù)眨八,用戶帳號有不可預測的中文字符,在url中如果不對中文字符轉碼的話,在發(fā)送請求后http底層一系列的處理可能會出現(xiàn)編碼問題彭沼,導致第三方API服務器無法解析正確的參數(shù)。
在golang中备埃,已經(jīng)有標準庫net/url
對url中文字符的處理姓惑。
- QueryEscape函數(shù)對s進行轉碼使之可以安全的用在URL查詢里褐奴。
// net/url
func QueryEscape(s string) string {
return escape(s, encodeQueryComponent)
}
- QueryUnescape函數(shù)用于將QueryEscape轉碼的字符串還原。它會把%AB改為字節(jié)0xAB于毙,將'+'改為' '敦冬。如果有某個%后面未跟兩個十六進制數(shù)字,本函數(shù)會返回錯誤唯沮。
// net/url
func QueryUnescape(s string) (string, error) {
return unescape(s, encodeQueryComponent)
}
利用url.QueryEscape對含有中文字符的參數(shù)轉碼匪补,然后再拼接到url中,就可以正確調用第三方的API接口了烂翰。