2010-06-28 14 views
7

Sto lavorando a un sito in lingua francese costruito in CakePHP. Ho provato più funzioni per provare a convertire il testo in UTF-8 e visualizzarlo correttamente, ma finora non ho avuto alcun successo - tutte le lettere accentate vengono visualizzate come un diamante nero con un punto interrogativo. Esse vengono visualizzate correttamente quando cambio il set di caratteri nel browser in ISO-8859-1, ma mi piacerebbe rendere il sito UTF-8 compatibile. Ho usato:Problemi di visualizzazione di caratteri accentati in francese in UTF-8

html_entity_decode ($ stringa, ENT_QUOTES, 'UTF-8'); htmlspecialchars ($ stringa, ENT_QUOTES, 'UTF-8'); utf8_encode

ma senza sigaro. La pagina è impostato su UTF-8 nell'intestazione

e il database MySQL sta usando UTF-8 anche. Come posso visualizzare correttamente i caratteri accentati in UTF-8?

+0

Spiacente, non sapevo come accettare le risposte, l'ho fatto ora – igniteflow

+1

in generale, non hai nulla da convertire. è sufficiente memorizzare il testo dell'utente senza alcuna codifica e visualizzarlo solo usando htmlspecialchars. –

risposta

8

Controlla il tuo @@character_set_results. Per impostazione predefinita, MySQL utilizza latin1, non utf8. Prova SET NAMES utf8 o mysqli::set_charset.

Aggiornamento: ecco come si potrebbe verificare i set di caratteri in uso:

mysql> SHOW VARIABLES LIKE '%char%'; 
+--------------------------+----------------------------+ 
| Variable_name   | Value      | 
+--------------------------+----------------------------+ 
| character_set_client  | utf8      | 
| character_set_connection | utf8      | 
| character_set_database | utf8      | 
| character_set_filesystem | binary      | 
| character_set_results | utf8      | 
| character_set_server  | utf8      | 
| character_set_system  | utf8      | 
| character_sets_dir  | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+ 

Altre notizie su dev.mysql.com.

5

Primo: Controlla la codifica dei file php! Lavoro su Mac, uso il Coda per programmare e ha un'opzione per convertire il charset, a volte ho problemi come questo e la conversione in UTF-8 li risolve sempre. Penso che Notepad ++ possa farlo su Windows. (Se si esegue questa operazione sui file PHP, ogni stringhe su di loro non avranno bisogno le funzioni htmlspecialchars(), html_entity_decode, ecc)

In secondo luogo: se si utilizza Output HTML, controllare se si dispone <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> sul colpo di testa ..

Terzo: Fai ciò che @janmoesen ha detto sul tuo DB MySQL.

Dimmi qualcosa al riguardo.

+1

sei da uomo. Non ho mai pensato che potesse essere causato dalla vera codifica dei file. –

+0

hehehe apprendimento e insegnamento! :) – CuSS

1

Ho appena risolto un problema molto simile con caratteri accentati non visualizzati. La mia tabella di database è codificata utf-8 e la mia intestazione html è impostata correttamente per utf-8.

Non avevo specificato un set di caratteri per la mia connessione MySQL, nel mio caso sto usando PDO.

$this->pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8;", $username, $password); 

Nessun problema ora!

Problemi correlati