Java Path.getName() усекает закодированный знак процентаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java Path.getName() усекает закодированный знак процента

Сообщение Anonymous »

.Net dev здесь, немного новый для Java. У меня есть следующий фрагмент кода. Я пытаюсь получить последний сегмент закодированного URL-адреса, но, как вы можете видеть, он отсекает конечный «%25» и делает его просто «%». Это приводит к сбою URlDecoder.Decode, поскольку строка больше не закодирована должным образом.
В идеале я бы хотел использовать Path.getName(), потому что, насколько я понимаю, она не будет включать параметры запроса. Также мне бы очень хотелось избегать сторонних библиотек, если это возможно (это кажется довольно простой задачей). Кто-нибудь знает, что я здесь делаю неправильно, есть ли способ заставить Path.getName() не обрезать закодированный "%25" в конце?
var playerSrcPath = URI.create("https://www.speedrun.com/api/v1/guests/ ... +to+Any%25").getPath();
var path = Paths.get(playerSrcPath);
var lastSegment = path.getName(path.getNameCount() - 1).toString();
System.out.println(lastSegment);

// this errors, lastSegment got cut off, no longer properly encoded.
var playerAbbr = URLDecoder.decode(lastSegment, StandardCharsets.UTF_8);
System.out.println(playerAbbr);


Подробнее здесь: https://stackoverflow.com/questions/790 ... rcent-sign
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»