#java #encoding
#java #кодирование
Вопрос:
У меня есть строка, подобная этой " <person name="peter" ><person>"
Кодировка URL
URLEncoder.encode(person.toString(),"UTF-8");
но кодировка плохая, потому что для пробелов сделайте
insted of
, а для =
он выдает другие значения, ребята, вы можете мне помочь?
Комментарии:
1. Вы уверены, что это не конечный тег? Это должно быть «</person>»
2. В чем именно проблема? Это правильная кодировка
application/x-www-form-urlencoded
типа (см. en.wikipedia.org/wiki/Percent-encoding ).3. Почему вы хотите, чтобы URL-кодировал это? Вы понимаете, что делаете?
4. ну, на самом деле мне нужно получить доступ к веб-сервису, который не является моим, и ответ таков: «% 3C / person% 3E»
5. @subspider Итак, что вы на самом деле хотите, это URLDECODE этого ответа, верно?
Ответ №1:
Это точно так, как указано в URLEncoder
javaDoc. Пространство преобразуется в
и =
является «небезопасным» и, следовательно, кодируется в =
.
Если вам нужно
вместо
, просто выполните некоторую постобработку:
URLEncoder.encode(person.toString(),"UTF-8").replace(" ", " ");
Комментарии:
1. спасибо за помощь, мне просто интересно, существует ли другой тип кодировки
Ответ №2:
Учитывая ваш комментарий, я предполагаю, что вы хотите декодировать ответ веб-сервиса.
// the answer you receive from the webservice
string webserviceResponse = "";
// turn into a "good" Xml string
string person = URLDecoder.decode(webserviceResponse, "UTF-8");
даст вам
<person name="peter"></person>
в качестве значения person
.
Комментарии:
1. нет, веб-сервис выполняет это кодирование, но даже простое
@
преобразуется как@
2. @subspider Я не предполагал, что веб-сервису действительно нужно кодировать. Из вашего комментария выше я предположил, что вы действительно хотите декодировать ответ, который вы получаете от этого внешнего веб-сервиса.
3. Преобразование специальных символов @subspider является целью URLEncoding.