2014-04-19 3 views
6

Ho una API REST che restituisce attività/aziende/note/ecc. Su localhost funziona bene, indipendentemente dalla descrizione dell'attività o dal nome della società che scrivo, ma inserisco la mia app sul server e quando utilizzo segni come "łźążćę", c'è l'errore Your data could not be encoded because it contains invalid UTF8 characters." at app/endor/jms/serializer/src/JMS/Serializer/JsonSerializationVisitor.php line 36.Errore di codifica JMSSerializer e UTF-8 (Symfony2.4)

I database sono uguali, anche le tabelle, tutte le opzioni di configurazione sono le stesse. Come posso risolvere questo?

risposta

0

Ho trovato una soluzione per questo problema impostando le proprietà di connessione del database per trasferire i dati con il set di caratteri UTF-8. Questo è come la sezione doctrine assomiglia a mio app/config/config.yml

doctrine: 
    dbal: 
     default_connection: default 

     connections: 
      default: 
       driver: %database_driver% 
       dbname: %database_name% 
       user:  %database_user% 
       host:  %database_host% 
       password: %database_password% 
       charset: UTF8 
       options: 
        1002: "SET NAMES 'UTF8'" 
0

Ho avuto lo stesso messaggio di errore, solo nella produzione. Si è scoperto che una riga nel database conteneva il carattere ¨, (U + 00A8) che il serializzatore non poteva gestire.

La rimozione del personaggio ha risolto il problema.

1

Ho avuto lo stesso errore quando uso @VirtualProperty con il metodo che taglia la stringa con la funzione substr (str, start, length). Questa funzione è una cattiva scelta se si utilizza UTF8. Utilizzare invece mb_substr.