两个URL编码字符串之间的Java差异

时间:2011-05-10 18:09:21

标签: java string encoding java-me utf-8

以下两个编码字符串有什么区别?

%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的移动平台上工作时,我必须使用这个。

谢谢!

2 个答案:

答案 0 :(得分:6)

w3schools的URL编码器完全没错。 %D0%9E%D0%BA%D0%B6%D1%8D%D0%B7完全有效。这也是我做的事情

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

当我对w3schools的答案进行URL解码时如下

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

那个w3schools网站顺便说一句,与W3联盟无关。另请参阅w3fools

答案 1 :(得分:3)

您的字符串“Привет”编码为:

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

第二个字符串似乎在url-encoding之前被转换为HTML实体:

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

%26&%23#%3B;

П
р
и
в
е
т