Автоматическое форматирование строки Unicode в Java - PullRequest
0 голосов
/ 16 сентября 2009

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

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

Распечатан, образец выглядит так:

somejunk + <foobar> + morestuff

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

Ответы [ 3 ]

2 голосов
/ 16 сентября 2009

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

String res = java.net.URLDecoder.decode(sample, "UTF8");
1 голос
/ 16 сентября 2009

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

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

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

1 голос
/ 16 сентября 2009

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

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