Come visualizzare il testo in UTF8 da mysql / phpmyadmin?


5

Ho un database con più tabelle. Il database e la tabella e ogni riga di tabella sono impostati su utf8_romanian_ci.

Tutti i nomi che importano che contengono segni diacritici non verranno visualizzati correttamente.

Ad esempio: se presento MaÂehx in tavola ho appena M

I dati dalla tabella vengono importati da csv file. In Excel i segni diacritici appaiono normalmente.

Come posso risolvere questo?


Ciao UTF8, vedo che hai appena iniziato sul sito, quindi ricorda di accettare una risposta se ha risolto il problema. Grazie!
zx81

Risposte:


4

UTF-8 è un'amante volubile. Per una tipica applicazione Web, è necessario impostare UTF-8 a molti livelli. Anche se il codice phpMyAdmin funziona bene con UTF8, non funziona nel vuoto: la configurazione del server è importante. Così è il database, così come l'origine dati per il database. Riassumiamo le aree di potenziale attrito in un'applicazione generale, con particolare attenzione alle aree di interesse per phpMyAdmin.

A. Fonte dei dati

Quando i dati vengono importati nel database, ad esempio da un file di testo, devono avere la codifica corretta. I segni diacritici potrebbero essere visualizzati in Excel, ma la codifica potrebbe essere qualsiasi cosa. Quindi puoi avere un file CSV che sembra giusto ma che non importa correttamente. Puoi controllare e convertire la codifica del tuo file CSV in un editor di testo come EditPad o un IDE come Komodo. In Notepad ++, che molte persone hanno, puoi selezionare "Codifica" per vedere la tua codifica corrente, e puoi selezionare Codifica / Converti in UTF8 in necessario.

B. Nel tuo database. Il set di caratteri e le regole di confronto della tabella devono essere impostati su UTF-8. Sembra che tu lo abbia già fatto.

Se no, hai bisogno di qualcosa come:

ALTER TABLE MyTable
DEFAULT CHARACTER SET utf8,
COLLATE utf8_general_ci;

Questa è l'impostazione generica, ma la tua collazione rumena dovrebbe funzionare bene.

C. La connessione al database. Hai bisogno di qualcosa come:

$connectDSN = "mysql:host={$db_host};dbname={$db_name};charset=UTF-8";

PhpMyAdmin dovrebbe connettersi correttamente. Nella pagina di destinazione, dovresti vedere

Server charset: UTF-8 Unicode (utf8) 

In caso contrario, continua a leggere.

D. php deve elaborare UTF8. In php.ini, vorrete qualcosa come:

default_charset = UTF-8     
mbstring.language = Neutral 
mbstring.internal_encoding = UTF-8      
mbstring.encoding_translation = On      
mbstring.http_input = auto      
mbstring.http_output = UTF-8        
mbstring.detect_order = auto        
mbstring.substitute_character = “0xFFFD”    

Puoi controllare le impostazioni del tuo server con phpinfo (). Su un host condiviso, di solito non hai accesso a php.ini e devi modificare le impostazioni direttamente nello script. A proposito, ricorda di usare le funzioni mb.

E. Configurazione dell'intestazione

Perché il browser sappia cosa sta ottenendo, deve ricevere un'intestazione come la seguente inviata da php:

<?php  header('Content-type: text/html; charset=UTF-8');   ?>

Questo non dovrebbe essere un problema con phpMyAdmin. In Firefox, utilizzando l'estensione per sviluppatori Web, è possibile accedere a Informazioni / Visualizza informazioni sulla pagina. Nella scheda Generale, questo ti mostrerà la codifica.

F. Meta tag HTML

Questo è consigliato per aiutare il browser.

<meta charset="UTF-8">

Questo non dovrebbe essere un problema con phpMyAdmin. Di nuovo controlla nel browser che cosa sta vedendo la codifica.

G. Font

Il browser potrebbe non avere il carattere per visualizzare alcuni caratteri, sebbene le versioni moderne siano piuttosto buone sui caratteri di fallback. Questo probabilmente non è un problema nel tuo caso.

Quindi ci sono molti posti in cui le cose possono andare storte.

Spero che questo ti aiuti a identificare il problema!

Quando tutto si allinea, allora magia ... Ottieni UTF8 ovunque.

E non dimenticare:

ಬಾ ಇಲ್ಲಿ ಸಂಭವಿಸು ಇಂದೆನ್ನ ಹೃದಯದಲಿ

ನಿತ್ಯವೂ ಅವತರಿಪ ಸತ್ಯಾವತಾರ


Sono consapevole che questa è una vecchia risposta, mysqli_set_charset($this -> link , 'utf8'); risolto il mio problema, era la mia 'rottura della catena' se ti piace :-)
Edward
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.