2015-07-01 33 views
0

在不同的編程語言中有多個類和函數用於編碼和解碼字符串,以實現URL友好。例如針對查詢字符串的跨平臺Url編碼

在java中

URLEncoder.encode(String, String) 

在PHP

urlencode (string $str) 

而且......

我的問題是,如果我在Java URLEncode的字符串,可我希望其他的不同其他語言的UrlDecoders解碼到相同的原始刺痛?

我正在創建一個服務,需要在查詢字符串中編碼一些Base64值,我不知道誰在服務。 請考慮我在這裏唯一的選擇似乎是查詢字符串。我不能使用XML或JSON或HTTP頭由於我需要這個在一個URL被重定向。 我環顧四周,有一些問題完全像這樣,但他們中沒有人有正確的答案。 我非常感謝任何承認或任何解決方案。

編輯:

例如在PHP Manual有這樣的描述:

返回字符串,其中所有的非字母數字字符除了-_。已被替換爲百分號(%)符號,後跟兩個十六進制數字和空格,編碼爲加號(+)。它的編碼方式與WWW表單發佈的數據編碼方式相同,這與application/x-www-form-urlencoded媒體類型中的方式相同。這不同於»RFC 3986編碼(參見rawurlencode()),由於歷史原因,空格被編碼爲加號(+)。

這聽起來並不遵循RFC

回答

0

聽起來URL編碼器可以在不同的編程語言使用不同的算法。

但是應該尋找每個函數的編碼模式。例如它們中的一個可以是

應用程序/ x-WWW窗體-urlencoded

尋找到JAVA地址編碼器:

平移一個字符串轉換爲應用程序/ x-WWW-形式urlencoded格式使用特定的編碼方案。此方法使用提供的編碼方案來獲取不安全字符的字節。

也期待到PHP的

是相同的方式,在應用程序/ x-WWW窗體-urlencoded媒體類型

所以,如果你正在尋找一個跨平臺網址編碼你應該告訴你的用戶你的編碼器的格式是什麼。 這樣,他們可以找到合適的解碼器,否則他們可以實現自己的解碼器。
經過一番調查,聽起來application/x-www-form-urlencoded是最受歡迎的。