Автоматическое форматирование строки Unicode в Java

StackOverflow https://stackoverflow.com/questions/1433443

  •  07-07-2019
  •  | 
  •  

Вопрос

Я только что наткнулся на что-то вроде этого:

String sample = "somejunk+%3cfoobar%3e+morestuff";

Распечатанный образец выглядит следующим образом:

какой-то придурок+<foobar>+больше всего

Как это работает?U + 003c и U + 003e - это коды Unicode для знаков меньше и больше соответственно, что кажется более чем совпадением, но я никогда не слышал, чтобы Java автоматически делала что-то подобное.Я полагал, что это будет легко сделать в Google, но оказалось, что Google не любит знак процента.

Это было полезно?

Решение

Вы можете сделать что-то вроде этого,

    String sample = "somejunk+%3cfoobar%3e+morestuff";
    String result = URLDecoder.decode(sample.replaceAll("\\+", "%2B"), "UTF8");

Другие советы

Эта строка, вероятно, URL-адрес в кодировке Вы бы расшифровали это на java, используя URLДекодер

String res = java.net.URLDecoder.decode(sample, "UTF8");

Java поддерживает экранирование Unicode в char и String литералы, но не кодировка URL.

Экранирование в Юникоде использует '\uXXXX', где XXXX - это точка Юникода в шестнадцатеричном формате.

Любопытный лакомый кусочек:Грамматика позволяет 'u' происходить несколько раз, так что '\uuuuuuuu0041' является допустимым экранированием в Юникоде (для 'A').

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top