Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Кирилли, JSP & MySQL


Автор: MisterCleric 26.4.2006, 16:44
Хочу занести в табилцу данные из формы, введеные на русском языке.
Кодировка в базе UTF8-bin, тоже и в jsp
Код

  <jsp:directive.page contentType="text/html; charset=UTF-8" />

При это данные, введенные в базу руками на русском, на страничке отображаються корректно.
Сохранение данных из jsp на английском тоже сохраняеться корректно, но при попытке сохранения кирилицы TomCat выдает:
Код

org.apache.jasper.JasperException: javax.servlet.jsp.JspException: 
        UPDATE staff SET Name = "Ñ�миÑ�ми",
                         LastName = "ываыва",
                         Phone = 1212, 
                         Job_id = 14,
                         Tabnom = 5
                         where Tabnom = 5
        : Data truncation: Data too long for column 'Name' at row 1
и т.д.


Подскажите, как побороть эту проблему, где не искал, что не делал ничего не помогает. Даже так:
Код

                   url="jdbc:mysql://localhost:3306/factory?characterEncoding=UTF-8" />

при задании Context Connection Pool 

Автор: ALKS 26.4.2006, 16:59
когда-то спасало использование фильтра filters.SetCharacterEncodingFilter 

в web.xml надо добавить что-то врод этого:
Код

<filter>
    <filter-name>Set Character Encoding</filter-name>
    <filter-class>filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <servlet-name>action</servlet-name>
  </filter-mapping>


это выдрано из нашего достаточно старого проекта. про последние версии Tomcat я не уверен, ну и естественно filter-mapping правильно впишите... 

Автор: Tony 26.4.2006, 17:28
Уфф...
1.JSP долзны быть в UTF-8
2.Соединение с БД долзно быть в UTF-8
3.Создай филтер для кодировок(implements Filter)
4.База должна быть создана в UTF-8

И всё будет пу4ком 

Автор: tux 27.4.2006, 06:39
http://forum.vingrad.ru/index.php?showtopic=66203
http://forum.vingrad.ru/index.php?showtopic=90830 

Автор: sandello 27.4.2006, 06:58
Цитата(MisterCleric @  26.4.2006,  18:44 Найти цитируемый пост)
Подскажите, как побороть эту проблему, где не искал, что не делал ничего не помогает. Даже так:
Код

url="jdbc:mysql://localhost:3306/factory?characterEncoding=UTF-8"

при задании Context Connection Pool

Попробуй задать не "UTF-8" а "utf8". Мне это помогло :-) 

Автор: MisterCleric 27.4.2006, 16:35
Всем спасибо! 
У меня получилось так:
Код

  <fmt:requestEncoding value="UTF-8" />
  <jsp:directive.page contentType="text/html; charset=UTF-8" />

На всех страничках приложения.
Пишут, что установки для странички не достаточно.
плюс
Код

   Context path="/fromm" docBase="fromm"
                debug="5" reloadable="true" crossContext="true">
          <Resource name="jdbc/fact" auth="Container" type="javax.sql.DataSource"
                   maxActive="100" maxIdle="30" maxWait="10000"
                   username="Cleric" password="raven666" driverClassName="com.mysql.jdbc.Driver"
                   url="jdbc:mysql://localhost:3306/factory?characterEncoding=UTF-8" />
        </Context>

Что значит: установка кодировки для праметров в ответе и установка кодировки при связи с БД

И без усяких фильтров! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)