Domanda

Ho una piccola applicazione Ajax costruita con PHP.

Usando phpMyAdmin ho impostato un database mysql su utf-8 e vi ho importato un file di testo contenente i dati utf-8.

Funzionava perfettamente su una macchina Windows con easyphp, dopo aver aggiunto character-set-server = utf8 e default-character-set = utf8 al file my.cnf.

Ora ho provato a spostarlo su un server di produzione in cui non ho accesso al file di configurazione, e caratteri come umlaut non vengono visualizzati.

C'è qualcosa che può essere impostato nel codice php (non nel file di configurazione) per risolvere questo problema, o qualche comando che posso dare a mysql?

Ho provato ALTER DATABASE vweb_50 SET DI CARATTERI PREDEFINITO utf8 COLLATE utf8_bin con phpMyAdmin per provare da utf8_general_ci ma non ha fatto differenza.

È stato utile?

Soluzione

Ci sono un paio di cose da fare qui, e non sono sicuro di aver capito correttamente il tuo problema, ma se lo faccio, penso che la maggior parte possa essere risolta con le funzioni PHP utf8_encode e utf8_decode :

  • utf8_encode
    • Codifica una stringa ISO-8859-1 in UTF-8
  • utf8_decode
    • Questa funzione decodifica i dati, considerati codificati UTF-8, in ISO-8859-1.

Inoltre, guarda htmlentities se necessario.

Altri suggerimenti

Se usi utf-8 in tutta l'applicazione (che consiglierei), non hai bisogno delle funzioni utf8_encode / decode. Hai controllato in quale codifica viene pubblicata la tua pagina? Probabilmente il server è configurato per inviare iso-8859-1 come set di caratteri, mentre l'ambiente di test invia utf-8. Imposta la codifica con un'intestazione Content-Type:

header("Content-Type: text/html; charset=utf-8");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top