5

Wir sind in UTF-8-Zeichencodierung in unserer Web-Anwendung ermöglichen, ausgelegt unter Verwendung JSF2.0, Hibernate, MySQL.Aktivieren der UTF-8-Zeichensatz in JSF2.0, Hibernate, MySQL

Im Anschluss an die Datenquelle in unserer Anwendungskontext Datei

<bean id="DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> 
     <property name="driverClass" value="com.mysql.jdbc.Driver" /> 
     <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/dbname" /> 
     <property name="maxPoolSize" value="10" /> 
     <property name="maxStatements" value="0" /> 
     <property name="minPoolSize" value="5" /> 
     <property name="useUnicode" value="yes" /> 
     <property name="characterEncoding" value="UTF-8" /> 
    </bean> 

definiert, während die Anwendung läuft wir Ausnahme bekommen

Error creating bean with name 'SessionFactory' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Cannot resolve reference to bean 'DataSource' Error creating bean with name 'DataSource' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Invalid property 'useUnicode' of bean class [com.mchange.v2.c3p0.ComboPooledDataSource]: Bean property 'useUnicode' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter? 

Wir auch

einen Fehler bei der folgenden aber erhalten versucht haben, mit
<bean id="DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> 
     <property name="driverClass" value="com.mysql.jdbc.Driver" /> 
     <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/dbname?useUnicode=yes&characterEncoding=UTF-8;" /> 
     <property name="maxPoolSize" value="10" /> 
     <property name="maxStatements" value="0" /> 
     <property name="minPoolSize" value="5" /> 
    </bean> 


Error: The reference to entity "characterEncoding" must end with the ';' delimiter 

Antwort

7

nach einiger Arbeit um bin ich in der Lage das zu handhaben themen- Folgen ing ist der Code, der für mich arbeitet JDBC mit UTF8 arbeiten, damit

<bean id="DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> 
     <property name="driverClass" value="com.mysql.jdbc.Driver" /> 
     <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/dbname?useUnicode=true&amp;characterEncoding=UTF-8" /> 
     <property name="maxPoolSize" value="10" /> 
     <property name="maxStatements" value="0" /> 
     <property name="minPoolSize" value="5" /> 
    </bean> 

Mit useUnicode=true&amp;characterEncoding=UTF-8 mit &amp; diente dem Zweck

das gleiche mit Hibernate nutzen zu können auch die folgenden auf die Hibernate-Eigenschaften angeben

<property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
       <prop key="hibernate.show_sql">false</prop> 
       <prop key="hibernate.connection.useUnicode">true</prop> 
       <prop key="hibernate.connection.characterEncoding">UTF-8</prop> 
       <prop key="hibernate.connection.charSet">UTF-8</prop>    
      </props> 
     </property> 

angeben Anfrage Codierungsformat in dem Filter als auch

public class ApplicationFilter implements Filter {  
     public void destroy() { 
     } 

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

     public void init(FilterConfig fConfig) throws ServletException { 
     } 
    } 
Jetzt

selbst wenn die Anwendung und db sind nicht unterstützt Sonderzeichen überprüfen Sie die Datenbank-Zeichensatz, versuchen Sie, indem Sie die Datenbank neu zu erstellen und mit charset UTF8 anstelle latin1

+0

Das funktionierte !. Bei der Verwendung von postgresqI hatte ** gesetzt client_encoding TO ‚UTF8‘ ** zu tun, um die Zeichenkodierung zu ändern. Werfen Sie einen Blick auf https://www.postgresql.org/docs/9.3/static/multibyte.html – kimy82

0

Wenn Sie MySQL mit dem UI-Installer installieren, können Sie die Standardeinstellung Zeichensatz als 'UTF-8'. Danach funktioniert alles gut. Ich stelle das immer zur Installationszeit ein, sodass ich nicht weiß, wie ich es später einstellen soll. Aber wenn Sie nicht wollen, MySQL neu zu installieren, lesen Sie in diesem Link:

How do i Setup utf-8 as standard character set for a mysql server?

Verwandte Themen