2011-05-10 29 views
3

以下兩個編碼字符串有什麼區別?兩個URL編碼字符串之間的Java差別

%D0%9E%D0%BA%D0%B6%D1%8D%D0%B7 

%26%231055%3B%26%231088%3B%26%231080%3B%26%231074%3B%26%231077%3B%26%231090%3B 

我試圖URL編碼俄文本「Привет」到上面的第二編碼字符串(W3Schools encoder確實是正確的),但我使用的URL編碼器保持給我上面第一個編碼的字符串。我正在使用W3聯盟的URLUTF8Encoder.java。我必須使用這個,因爲我正在開發一個需要J2ME的移動平臺。

謝謝!

回答

6

w3schools的URL編碼器完全錯誤。 %D0%9E%D0%BA%D0%B6%D1%8D%D0%B7是完全有效的。這也是我所得到的,當我做

String encoded = URLEncoder.encode("Привет", "UTF-8"); 

如下

String decoded = URLDecoder.decode("%26%231055%3B%26%231088%3B%26%231080%3B%26%231074%3B%26%231077%3B%26%231090%3B", "UTF-8"); 

然後我得到Привет這正是那些俄文字符,但隨後轉換成XML entities第一當我URL解碼w3School的答案。

該w3schools網站順便說一句,與W3聯盟無關。另見w3fools

+0

謝謝,BalusC。這是非常豐富的。 – littleK 2011-05-10 20:13:20

+0

不客氣。 – BalusC 2011-05-10 20:13:41

+0

感謝您的w3fools鏈接! – asgs 2011-06-08 19:53:34

3

你的字符串 「Привет」 被編碼爲:

%D0%9E  
%D0%BA 
%D0%B6 
%D1%8D 
%D0%B7 

第二個字符串似乎被轉換成HTML實體URL編碼前:

%26%231055%3B 
%26%231088%3B 
%26%231080%3B 
%26%231074%3B 
%26%231077%3B 
%26%231090%3B 

%26&%23#%3B;

П 
р 
и 
в 
е 
т 
+0

感謝您的解釋! – littleK 2011-05-10 20:13:37