Entwicklungsumgebung:Hibernate Frühling kodieren charater falsch eingestellt [UTF-8]
- Frühling 4.2x
- Hibernate 4.3.11
- Tomcat 8 Server
- MySQL 5,4
Vor der Umstellung auf Hibernate war das Einfügen, Abrufen und Anzeigen der Zeichen kein Problem. Aber nachdem ich die Änderung in meinem DAO vorgenommen habe, um Hibernate seltsam zu benutzen, kann ich nicht das korrekte Zeichen in die MySQL DB einfügen.
Ich habe darauf geachtet, dass MySQL-Schema in der Tat UTF-8-Zeichensatz durch Abfrage speichern kann "INSERT INTO spring_normalize
offers
(text
, users_username
) VALUES ('Olm', 'lalalal');". Die Ausgabe auf der index.jsp ist korrekt.
Ich veränderte mein Hibernate Config
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.connection.useUnicode">true</prop><!-- added -->
<prop key="hibernate.connection.characterEncoding">UTF-8</prop><!-- added -->
<prop key="hibernate.connection.charSet">UTF-8</prop><!-- added -->
</props>
</property>
<property name="packagesToScan">
<list>
<value>com.caveofprogramming.pring.web.dao</value>
</list>
</property>
</bean>
Dies scheint nicht
Checkliste zu arbeiten:
- DB-Schema auf UTF-8 gesetzt ist - utf8_unicode_ci.
- Hibernat Config charSet zu UTF-8 hinzufügen.
- jsp Seite language = "java" content = "text/html; charset = UTF-8" pageencoding = "UTF-8
- Ich habe auch Filter wie dieser Beitrag vorgeschlagen hinzugefügt ... Spring MVC UTF-8 Encoding
* Update * das ist meine Bohnen und DAO
Formular
<sf:form method="POST" action="${pageContext.request.contextPath}/docreate" commandName="offer">
<sf:input type="text" path="id" name="id" readonly="true" />
<label for="text">Text</label>
<sf:textarea id="text" name="text" row="3" path="text"></sf:textarea>
<sf:errors path="text" cssClass="error"></sf:errors>
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
<input type="submit" value="Submit">
</sf:form>
Angebot
@Entity
@Table(name="offers")
public class Offer{
@Id
private int id;
private String text;
getIn(){}
.....
}
OfferDao
public class OfferDao{
@Autowired
private SessionFactory sessionFactory;
public Session currentSession(){
return sessionFactory.getCurrentSession();
}
public boolean create(Offer offer){
int hiberReturn =(int) currentSession().save(offer);
return hiberReturn >= 0;
}
}
Wer viel sehr geschätzt wird helfen ... wirklich .. vielen vielen Dank
Danke, das ich tat dies ... aber es ist immer noch nicht die richtigen Zeichen in –
zum MySQL-Speichern Bitte geben Sie SELECT col, HEX (col) FROM ... 'für einige "falsche" Zelle. Dies sollte bei der weiteren Diagnose helfen. –
Hummmm ich habe meine Frage aktualisiert, bitte sieh sie dir an ... meine Bohne und Dao ist ganz einfach ... Danke nochmal –