2 thoughts on “First in weird google search”

  1. Привет!

    Сигурен съм, че нарушавам правилата на този блог и т.н. ... но ще се оправдая с невежеството си което е "common issue" в моя случай... В отчаянието си ще поставя един проблем тук, с надеждата за някакво решение:

    Ще ви върна отново към Tomcat контейнера защото аз имам нов проблем с него (предполагам често срещан проблем, но да не прибързвам)...
    Проблема е загуба на енкодинг по веригата HTML -> JSP -> Servlet при използване на Java Bean.
    Схемата този път е следната:

    1. HTML страница с форма. В полетата на тази форма въвеждане символи (текст) на кирилица.
    2. Стандартен Java Bean (не EJB! забележете) който има за цел в живота си да хваща данните от една HTML форма (гореспоменатата).
    3. JSP страница която е зададена като action="" на HTML формата, на тази страница се извличат данните чрез публичните get-ери (get методи на Bean-а).
    Изпълнението на:
    {
    request.setCharacterEncoding("CP1251");
    response.setCharacterEncoding("CP1251");
    }
    в JSP страницата разваля всякаква кирилица (тази зададена в сорса на самата страница, и извлечената от Java Bean-a)...

    По принцип в JSP страниците винаги въвеждам:

    <%@ page pageEncoding="CP1251" contentType="text/html; charset=CP1251" %>

    но тук това предизвиква погрешно визуализиране на кирилицата от Java Bean-a! Значи за да излиза всичко както трябва, горните три които касаят енкодинга трябва да отсъстват...
    На JSP страницата има форма (само един SUBMIT бутон) която прехвърля заявката (чрез POST) към сервлет...

    4. Сервлет който чете полетата от Java Bean-a и визуализира данните директно (out.println()) ... Отново, ако няма
    {
    request.setCharacterEncoding("CP1251");
    response.setCharacterEncoding("CP1251");
    }
    данните от Java Bean-a се визуализират правилно, но другите символи които са също така параметри на out.println() и са на кирилица се показват погрешно...
    Ако поставя горните два израза в сервлета, става точно обратното - а именно, символите които са на кирилица и са параметри на out.println() в самия сорс се визуализират правилно, но данните четени от Java Bean-a и се подават заедно с тях на out.println() се визуализират погрешно (????)...

    Компромисен вариант при който да се показва всичко правилно има ли? Помогнете с това моля! Още не съм се отказал да търся решение на това, но до тук нямам успех. В контекста на MVC архитектура (потребителя вижда изход само от JSP и HTML) това не би трябвало да е проблем, но достатъчно дразнещо е че не работи при тези тестове които правя...

    Поздрави,

    Мартин

  2. Здравей,
    Тъй като пишеш на кирилица, ще ти отговоря на кирилица.

    Забелязвам, че правиш нещата правилно - двете задължителни стъпки са спазени, пишеш в header-а и слагаш мета данни в <head>, което според мен е начина да се направят нещата.

    Първото нещо, за което се сещам е, че пишеш CP1251 вместо cp1251. Доколкото си спомням, това оказва значение.

    Друго, недоумявам защо не ползваш UTF-8. Не виждам нито една контруктивна причина да се ползва една малка кодова таблица като cp1251, вместо една пълна такава.

    Ако имаш още въпроси, добра идея е да питаш на по-популярни места от това - например Java User групата. Там има много кадърни хора. Адрес: http://java-bg.net/

Leave a Reply

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail. You can also subscribe without commenting.

This site uses Akismet to reduce spam. Learn how your comment data is processed.