Struts, Hibernate, MySQL - проблема кодировки символов - PullRequest
2 голосов
/ 09 октября 2010

У меня есть веб-приложение, которое собирает некоторые данные от пользователя и сохраняет их в базе данных MySQL.Проблема заключается в том, что для такой строки, как «Ajánlat kiküldése», в базу данных записывается «Ajánlat kiküldà © se».

Для моей базы данных у меня есть DEFAULT CHARACTER SET utf8.Для моих таблиц у меня есть DEFAULT CHARSET = utf8.

В моем hibernate.cfg.xml у меня есть:

<property name="hibernate.connection.useUnicode">true</property>
<property name="hibernate.connection.characterEncoding">UTF-8</property>
<property name="hibernate.connection.charSet">UTF-8</property>

Если я ввожу «Ajánlat kiküldése» непосредственно в базу данных с помощью клиента mysqlтекст сохраняется правильно.ТАК где-то в моем приложении текст меняется.

У меня есть это на моей странице jspx:

<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>

Для моей формы я использую sutrts html taglib, и код очень прост:

<html:form action="/submitAddProject">
            <table>
                <tr>
                    <td>name</td>
                    <td>
                        <html:text property="projectNameToAdd"/> 
                    <td>
                 etc.

При отправке,когда я делаю myForm.getProjectNameToAdd, у меня есть текст, отличный от того, который я ввожу в форму.(Аджанлат кикюльде вместо Аджанлат кикулдесе)

Ответы [ 2 ]

2 голосов
/ 13 декабря 2011

У меня была похожая проблема, но моя проблема заключалась в прямом спящем сохранении данных в MySQL.Проблема может быть легко решена путем добавления useUnicode = true & characterEncoding = UTF-8 к строке подключения в файле конфигурации.

Например: jdbc.databaseurl = jdbc: mysql: // localhost: 3306 / myHibernateDB? UseUnicode =true & characterEncoding = UTF-8

Работал для меня как волшебное произведение.

Это статья, в которой говорится об этом: http://www.isocra.com/2007/01/utf-8-with-hibernate-30-and-mysql/

1 голос
/ 09 октября 2010

Вы можете попробовать создать следующий фильтр:

public class Utf8EncodingFilter implements Filter {

 public void init(FilterConfig config) throws ServletException {}

 public void doFilter(ServletRequest request, ServletResponse response, FilterChain next)
 throws IOException, ServletException {
  request.setCharacterEncoding("utf-8");
  next.doFilter(request, response);
 }

 public void destroy(){}
}

ОБНОВЛЕНИЕ: вам необходимо создать класс Utf8EncodingFilter, импортировать интерфейс фильтра, исключение и т. Д. (Любая современная IDE сделает это за вас).Затем вам нужно добавить этот фильтр в дескриптор развертывания (его можно найти по адресу WEB-INF / web.xml), используя следующий синтаксис:

  <filter>
    <filter-name>UTF-8 Encoding Filter</filter-name>
    <filter-class>com.example.Utf8EncodingFilter</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>UTF-8 Encoding Filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

Подробнее о фильтрах можно прочитать здесь: http://www.ibm.com/developerworks/java/library/j-pj2ee10.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...