tCharacterEncoding () з потрібною кодуванням, таким чином автоматом вирішуючи і третю проблему. Для більш старих серверів для розкодування параметрів у запиті клієнта треба застосовувати хитрощі, аналогічні описаним в розділі по сервлетам. p> Для прикладу, для того, щоб налаштувати JSP-форум Jive для роботи з російськими буквами треба відкоригувати такі файли:
/jive/header.jsp
/jive/admin/header.jsp
У них треба в початок додати рядок
В
Замість UTF-8 можна використовувати будь-яке кодування, підтримуючу російські літери - все залежить від смаків і уподобань. Інформацію про це прислав Олексій Епишкин, за що йому окреме спасибі. p> У деяких серверах зустрічаються баги, пов'язані з російськими буквами в JSP. Наприклад, сервер Orion не любить російську літеру "Т" - він замість неї в сгенеренний сервлет підставляє символ лапки. Там в нутрощах є приблизно такий код:
...
switch ( charstring.c1 (i))
...
public final char c1 (int i)
{
if (i <0 | | i> = length)
throw new StringIndexOutOfBoundsException (i);
else
return (char) (data [offset + i] & 0xff);
data - Це масив типу char []. Як видно, помилка тут тривіальна - розробник чомусь був впевнений що символи з кодами більше 255 - це помилка природи. :-) p> JavaMail p> Пакет JavaMail призначений для роботи з електронними листами. За допомогою цього пакета Ви можете відправляти і приймати листи через різні протоколи. Різні протоколи по різному обробляють національні символи. Найкращі поширені на даний момент протоколи Internet засновані на старому стандарті RFC-822. Згідно з цим стандартом у службових полях (заголовках) листів дозволено посилати тільки символи кодування ASCII, тобто тільки латинські букви (перші 128 символів Unicode). Очевидно, що це незручно, тому часто дуже хочеться писати, наприклад в полі Subject (тема листа) або в полях From/To (Ім'я та адреса відправника/одержувача) російський текст. Для того, щоб вирішити цю проблему був придуманий стандарт кодування MIME (RFC 2047). Він дозволяє в деяких полях заголовка (не у всіх) використовувати національні символи при допомогою спеціального кодування (Base64 або QuotedPrintable). p> Для подання листів у JavaMail використовується клас javax.mail.Message. Це абстрактний клас, реальне ж поведінка визначається спадкоємцями. Методи, визначені в ньому працюють тільки з звичайними Java-рядками (String). Для протоколів Internet зазвичай використовується спадкоємець javax.mail.internet.MimeMessage, який крім базових методів додає методи, в яких можна додатково вказувати кодування, яку слід використовувати для листів. Для кодування використовується допоміжний клас javax.mail.internet.MimeUtility. Клас MimeMessage зазвичай сам звертається до нього для кодування/розкодування заголовків, але, якщо Ви безпосередньо звертаєтеся до заголовкам (методи getHeader ()/setHeader ()/addHeader ()), то для їх кодув...