Attualmente sto creando una webapp Spring MVC e il database è la parte essenziale del backend. Per qualsiasi motivo, tuttavia, Spring rifiuta di elaborare i dati come UTF-8. Poiché le viste, le risorse e i browser sono impostati su Unicode, così come le tabelle nel database (e anche la lettura di un bel po 'di domande simili), ho stabilito che il problema risiede nella connessione al database.Come impostare useUnicode = true e characterEncoding = proprietà utf8 sulla connessione JDBC MySQL gestita dalla primavera
dovrebbe essere fornito il driver JDBC due elementi in ConnectionProperties: useUnicode (insieme a sì e characterEncoding (insieme a utf8) Si scopre, però, è impossibile
JDBC è un.. fagiolo, e come tale viene configurato tramite un file XML, in questo modo:
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/<database>" />
<property name="username" value="<not telling>" />
<property name="password" value="<not telling>" />
Questa impostazione converte tutti i caratteri non alfanumerici estratti dal database (ad esempio frecce o lettere greche) in discussione segni. Che è, ovviamente, inaccettabile.
ho provato diverse soluzioni: specificato l'URL di JDBC come jdbc:mysql://localhost:3306/<database>?useUnicode=yes&characterEncoding=utf8
, giocavo con my.ini
file (e MySQL Workbench) per forzare tutto nel database per impostazione predefinita utf8
charset, e qualcosa che ha causato il più grande mal di testa: l'aggiunta di <property name="connectionProperties" value="useUnicode=yes;characterEncoding=utf8" />
. Risulta, letteralmente impossibile impostare due proprietà Connection all'interno di un singolo bean, perché ... non vi è alcun carattere di separazione menzionato da nessuna parte (il bean proverà a leggerlo nel tentativo di impostare yes;characterEncoding=utf8
come valore di useUnicode
). Quindi la mia domanda è: come faccio a utf8?
Forse hai bisogno di un punto e virgola anche dopo 'characterEncoding = utf8', come menzionato qui: http://stackoverflow.com/questions/13359683/how-to-use-useunicode-yes-characterencoding-utf-8-with- dbcp – GriffeyDog
@GriffeyDog Ho messo un punto e virgola lì, non lo stavo copiando dal codice. Non mi permetterà di compilare anche senza uno (beh, sarebbe - ma otterrei un'eccezione poco dopo). –