2016-06-29 49 views
3

我正在與一個採用可能同時包含正斜槓和空格的URI組件的API進行交互。我需要對這個URI組件進行百分比編碼,這樣正斜槓和空格才能正確編碼。示例Go代碼可以發現here有沒有一種標準的方法來編碼一個包含前向斜線和空格的URI組件?

我轉向net/url來解決這個問題,但事實證明它並沒有做我想做的事情,顯然。

  • url.QueryEscape()旨在用於查詢字符串,因此它變成空白到+而非%20
  • url.Parse()url.ParseRequestUri()會將空白變成%20,但它會忽略/,因爲它應該。

由於我很可能會將這種情況弄糟(轉義爲non-trivial),所以我寧願依賴某個標準庫來爲我做這件事。在經過良好測試的Go庫中是否存在這樣的標準方法?

備註:我正在尋找的行爲與JS的encodeURIcomponent完全相同。

+0

可能的[編碼/解碼URL]重複(http://stackoverflow.com/questions/13820280/encode-decode-urls) – icza

+0

我在發佈前確實檢查過該問題。它不是重複的,因爲提供的問題和解決方案沒有考慮或處理在URI組件中轉義正斜槓的轉義。 – alienth

+0

你想要什麼? JavaScript的'encodeURIComponent()'的_exact_等價物? – icza

回答

0

顯然你的問題的一個版本使它在go1.8作爲url.PathEscape

在go1.8你正在尋找的代碼將是簡單的:

package main 

import (
    "fmt" 
    "net/url" 
) 

const expected = "/object/test%2Fbar%20baz" 

func main() { 
    uri := "/object/" 
    name := "test/bar baz" 

    fmt.Printf("%-25s %s\n", "Expected:", expected) 
    fmt.Printf("%-25s %s\n", "Actual :", uri+url.PathEscape(name)) 
} 

好問題。

相關問題