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

lit*_*leK 3 java string encoding utf-8 java-me

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

%D0%9E%D0%BA%D0%B6%D1%8D%D0%B7
Run Code Online (Sandbox Code Playgroud)

%26%231055%3B%26%231088%3B%26%231080%3B%26%231074%3B%26%231077%3B%26%231090%3B
Run Code Online (Sandbox Code Playgroud)

我正在尝试URL将俄语文本"Привет"编码到上面的第二个编码字符串中(W3Schools编码器正确执行),但我使用的URL编码器一直给我上面的第一个编码字符串.我正在使用W3联盟的URLUTF8Encoder.java.当我在需要J2ME的移动平台上工作时,我必须使用这个.

谢谢!

Bal*_*usC 6

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

String encoded = URLEncoder.encode("??????", "UTF-8");
Run Code Online (Sandbox Code Playgroud)

当我对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");
Run Code Online (Sandbox Code Playgroud)

然后我得到Привет的正是那些俄罗斯字符,然后首先转换成XML实体.

那个w3schools网站顺便说一句,与W3联盟无关.另见w3fools.