2013-08-15 4 views
6

Ho un fastidioso problema con una query di database su mssql. Se il risultato contiene caratteri speciali come il tedesco 'ä', non posso usare json_encode per ottenere il risultato come json correttamente.json_encode produce JSON_ERROR_UTF8 da MSSQL-SELECT

json_last_error ritorno che è uguale a JSON_ERROR_UTF8. Immagino che il database non restituisca i valori come UTF-8 codificati. La raccolta del database è * Latin1_General_CI_AS * e le colonne interessate sono varchars.

La configurazione di php mssql.charset non ha alcun effetto.

Ho letto che gli utenti di mysql potevano usare mysql_query('SET CHARACTER SET utf8'); per codificare correttamente i valori di ritorno. Cosa posso fare per ottenere correttamente i valori per mssql?

Suggerimento: non riesco a modificare nulla nel database.

+0

prova php's iconv() prima di json_encode() – goat

+0

'utf8_encode' prima i dati. – subroutines

risposta

11

Prima di codificare JSON, utilizzare utf8_encode() attorno alla stringa.

+0

Sembra essere la soluzione migliore. Basta iterare attraverso i risultati e convertire. Grazie per questo suggerimento. – hofmeister

+0

ha funzionato ...... –