2011-05-10 2 views
3

В чем разница между двумя закодированными строками?Разница Java между двумя URL-кодированными строками

%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, который я использую постоянно давая мне первую закодированную строку выше. Я использую URLUTF8Encoder.java от консорциума W3. Я должен использовать этот, поскольку я работаю на мобильной платформе, требующей J2ME.

Спасибо!

ответ

6

Кодировщик URL в w3schools делает это совершенно неправильно. %D0%9E%D0%BA%D0%B6%D1%8D%D0%B7 отлично подходит. Это также то, что я получаю, когда я

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

Когда я URL-декодирования ответить на w3schools' следующим

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.

+0

Спасибо, BalusC. Это было очень информативно. – littleK

+0

Добро пожаловать. – BalusC

+0

Спасибо за ссылку на w3fools! – asgs

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

Смежные вопросы