URLEncoder - какой набор символов использовать для пустого пространства вместо% 20 или + - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь открыть новое письмо из моего приложения Java:

        String str=String.valueOf(email);
        String body="This is body";
        String subject="Hello worlds";
        String newStr="mailto:"+str.trim()+"?subject="+URLEncoder.encode(subject,"UTF-8")+"&body="+URLEncoder.encode(body, "UTF-8")+"";
        Desktop.getDesktop().mail(new URI(newStr));

Вот мое URLE кодирование. Поскольку я не могу использовать тело или строку темы в URL без их кодирования, мой вывод здесь с «+» вместо пробела. Что нормально, я это понимаю. Я думал, есть ли способ визуализировать предмет и тело в моем сообщении? Я пытался с .replace ("+", ""), но он не работает, так как выдает ошибку. Вот как это сейчас:

enter image description here

Я думаю, что может быть другой набор символов, но я не уверен.

1 Ответ

0 голосов
/ 10 мая 2019

Так работает URLEncoder.

Один из возможных подходов - заменить все + на %20 после URLEncoder.enocde (...). Или вы можете полагаться на конструктор URI для кодирования ваших параметров.правильно:

String scheme = "mailto";
        String recipient = "recipient@snakeoil.com";
        String subject = "The Meaning of Life";
        String content = "..., the universe and all the rest is 42.\n Rly? Just kidding. Special characters: äöü";
        String path = "";
        String query = "subject=" + subject + "&body=" + content;
        Desktop.getDesktop().mail(new URI(scheme, recipient, path, query, null));

У обоих решений есть проблемы: при первом подходе вы можете заменить действительные знаки +, а при втором у вас будут проблемы с символом &.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...