我有一个web应用程序,从用户收集一些数据并将它们保存到mysql数据库。问题是,对于像“Ajánlatkiküldése”这样的字符串,存储到数据库的是“Ajânlatkiküldése”。struts,休眠,mysql - 字符编码问题
对于我的数据库,我有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>
如果我使用MySQL客户端输入“Ajánlatkiküldése”直接进入数据库,文本被正确保存。因此,在我的应用程序内部的某处,文本发生了变化。
我有这个在我的JSPX页:
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
对于我的形式我用sutrts html标记库,代码很简单:
<html:form action="/submitAddProject">
<table>
<tr>
<td>name</td>
<td>
<html:text property="projectNameToAdd"/>
<td>
etc.
在提交时,当我做myForm.getProjectNameToAdd ,我的文本与我在表单中输入的不同。 (Ajánlatkiküldé本身,而不是Ajánlatkiküldése)
一两件事:当我在数据库中手动输入的文本,它被正确地在我的应用程序中显示。该问题仅在保存文本时出现。 – Mihaela 2010-10-09 08:15:14
在我保存到数据库之前,当我在我的字符串字段上调用getter来产生问题时,我已经以错误的编码获取了文本。所以,当我尝试保存到数据库时,问题并非如此,但是当我的表单对象的字段正在从html页面填充时,更确切地说,由stter接收的字符串已经扭曲,并且与输入的字符串不同在文本字段中。 – Mihaela 2010-10-09 08:42:05
你使用任何连接池framewrok? – fmucar 2011-02-14 09:48:09