URLDecoder: недопустимые шестнадцатеричные символы в шаблоне escape (%) - для входной строки: "^*"
Я хочу отправить по электронной почте этот текст
Destination : 6W - ATLANTA WEST!@#$%^*!gemini!@#$%^*!jfds!@#$%^*!,Trailer Number : 000564,,Drop empty trailer at Plant Numbe :546,Pick up trailer at Plant Number :45, Bill Date : 25-Jan-2013,Bill Time - Eastern Time : 1,Trip Number :456,MBOL :546,Carrier :Covenant!@#$%^*!test@shaw.com!@#$%^*!transport@shaw.com!@#$%^*!test@transport.com!@#$%^*!antoalphi@gmail.com,Destination : 6W - ATLANTA WEST!@#$%^*!gemini!@#$%^*!jfds!@#$%^*!,Customer Name : 567,Cusomer Delivery Address : 657567657,General Comments :657,Warehouse Comments : 65,Carrier Comments : ,Appointment Date :25-Jan-2013,Appointment Time : 1am,Rail Only :Standard,Total Weight : 45645
и я использовал это mailContent = URLDecoder.decode(Body, "UTF-8");
расшифровывает,
но это дает мне это исключение URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "^*"
Может ли кто-нибудь из вас помочь мне, как решить это. Я получаю это при отправке почты.
С уважением
2 ответа
Вы пытаетесь URL-декодировать то, что не было URL-кода в первую очередь. Что не так с телом как оно есть? Другими словами, что произойдет, если вы просто используете:
mailContent = Body
(В кодировке URL символ% используется с двумя шестнадцатеричными цифрами для кодирования символов, которые могут вызвать проблемы, например, /
будет закодирован как %2F
, поскольку его код ASCII равен 47 (десятичный) или 2F (шестнадцатеричный). В вашем теле, %
сопровождается двумя символами, которые не являются шестнадцатеричными цифрами - вот как я могу сказать, что он не был закодирован в URL, и почему декодер дает ошибку.)
Просто прекратите вызывать URLDecoder.decode(), и вы перестанете получать ошибку! Строковое значение, которое вы передаете ему, не закодировано в URL.
Существуют различные формы кодирования MIME, которые вы можете рассмотреть, если отправляете электронное письмо с содержимым, которое обычно не допускается в сообщении электронной почты без кодировки. Там ссылки могут быть полезны:
- Что разрешено в SMTP: http://www.apps.ietf.org/rfc/rfc788.html
- Базовая кодировка MIME: http://www.apps.ietf.org/rfc/rfc1341.html
- Поддержка Java MIME: http://docs.oracle.com/javaee/1.4/api/javax/mail/internet/MimeUtility.html
Например, вы можете попробовать:
String sendable = MimeUtility.encodeText(body,"UTF-8","BASE64")