|
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 Продолжение статьи: ч.1 Продолжение статьи: ч.2 Продолжение статьи: ч.3 Продолжение статьи: ч.4 Продолжение статьи: ч.5 Продолжение статьи: ч.6 Продолжение статьи: ч.7 Продолжение статьи: ч.8 Продолжение статьи: ч.9 Продолжение статьи: ч.10 Другие статьи по теме: - практическое введение в программирование на javascript- Java. объектно-ориентированное программирование с интерфейсами - революция java - Java: русские буквы и не только... - поисковая оптимизация как вид деятельности |
|
2006-2024 © SMTI.RU Главная страница | Связаться с нами |