2014-04-19 19 views
6

Mam aprefejs REST, który zwraca zadania/firmy/notatki/etc. Na localhost działa dobrze, bez względu na opis zadania czy nazwę firmy piszę, ale umieszczam moją aplikację na serwerze i kiedy używam znaków takich jak "łźążćę", jest błąd Your data could not be encoded because it contains invalid UTF8 characters." at app/endor/jms/serializer/src/JMS/Serializer/JsonSerializationVisitor.php line 36.JMSSerializer i błąd kodowania UTF-8 (Symfony2.4)

Bazy danych są takie same, tabele też, wszystkie opcje konfiguracji są takie same. Jak mogę to naprawić?

Odpowiedz

0

Znalazłem rozwiązanie tego problemu, ustawiając właściwości połączenia z bazą danych do przesyłania danych za pomocą zestawu znaków UTF-8. W ten sposób odcinek doctrine wygląda w moim 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

miałem ten sam komunikat o błędzie, tylko w produkcji. Okazało się, że jedna linia w bazie danych zawierała znak ¨, (U + 00A8), z którym serializer nie mógł sobie poradzić.

Usunięcie znaku rozwiązało problem.

1

Miałem ten sam błąd, gdy używam @VirtualProperty z metodą, która przecinała ciąg znaków przy pomocy funkcji substr (str, start, length). Ta funkcja jest złym wyborem, jeśli używasz UTF8. Zamiast tego użyj mb_substr.

Powiązane problemy