Главная Контакты


  На сайте

  Java, JavaScript
  Документация Perl
  Документация PHP
  Документация ASP
  Новости сайта
  Flash
  Интернет протоколы
  Apache
  Уроки программирования
  Язык программирования C
 


Java: русские буквы и не только...


Своё решение проблемы так же предложил Вячеслав Педак.

Ну а самый простейший вариант извлечь таки символы - передавать в комплекте параметров имя кодировки (или, если вы уверены в текущей кодировке броузера, использовать предопределённую кодировку) и использовать метод перекодировки символов: public void doPost (HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { // Кодировка сообщений // В связке MSIE 4.01 SP1 -> JSDK 2.0 // servletrunner.exe всегда выдаёт "ISO-8859-1" String requestEnc = request.getCharacterEncoding(); // Некоторые servlet engine, // не мудрствуя лукаво, возвращают null if( requestEnc==null ) requestEnc="ISO-8859-1"; String clientEnc = request.getParameter("charset"); if( clientEnc==null ) clientEnc="Cp1251"; String value = new String(request.getParameter("value"). getBytes(requestEnc),clientEnc); Изврат, конечно, но зато работает. :-)

В общем, опыт в написании Servlet-ов у меня небольшой, так что Ваши замечания будут приветствоваться. CORBAВ стандарте CORBA предусмотрен тип, соответствующий Java-овскому типу String. Это тип wstring. Всё бы хорошо, но некоторые CORBA-сервера не поддерживают его в полной мере. Типичное исключение, возникающие при спотыкании на русских буквах: org.omg.CORBA.MARSHAL: minor code 5 completed No. Лучше всего, конечно, заменить CORBA-сервер. К сожалению у меня нет статистики, поэтому я не могу сказать, с какими проблем не будет. Если сменить систему не представляется возможным, можно вместо типа wstring использовать тип string в паре с нашим любимым преобразованием: // Серверная часть a = new Answer(new String( src.getBytes("Cp1251"),"ISO-8859-1" )); ... // Клиентская часть Answer answer=serverRef.getAnswer(); res = new String ( answer.msg.getBytes("ISO-8859-1"),"Cp1251" ); Тип wstring при этом лучше не использовать, потому как тем самым Вы кривость сервера будете компенсировать кривостью своих компонентов, а это практически всегда чревато разнообразными проблемами в будущем.

Вместо Cp1251 можно использовать любую кодировку русских букв, по желанию. Это будет кодировка, в которой будут передаваться строки в компоненты на других языках. Также, аналогичный код может потребоваться, если необходимо организовать связь с готовыми не-Java компонентами, которые уже использовали тип string.

Честно говоря, не лежит у меня душа к таким решениям, ну да что поделаешь, иногда оно единственное. JNI

Другие статьи по теме:

- практическое введение в программирование на javascript
- Java. объектно-ориентированное программирование с интерфейсами
- революция java
- Java: русские буквы и не только...
- поисковая оптимизация как вид деятельности


Голосование:
Чего Вы хотели бы видеть больше на сайте?

Статей, документации
Скриптов
Программ для вебмастера
Я не знаю



Другие голосования

Обмен кнопочками:



Приглашаем Вас обменяться кнопочками! Обращайтесь к администратору.


Новые статьи:


Наши партнеры:





2006-2024 © SMTI.RU
Главная страница | Связаться с нами