lettura del contenuto utf-8 dalla tabella mysql

Ho una tabella mysql con contenuti

la struttura è qui:

alt text

Ora ho un record in questo:

alt text

Voglio leggere e printingre il contenuto di questa tabella in html Questo è il mio codice:

<?php include("config.php"); $global_dbh = mysql_connect($hostname, $username, $password) or die("Could not connect to database"); mysql_select_db($db) or die("Could not select database"); function display_db_query($query_string, $connection, $header_bool, $table_params) { // perform the database query $result_id = mysql_query($query_string, $connection) or die("display_db_query:" . mysql_error()); // find out the number of columns in result $column_count = mysql_num_fields($result_id) or die("display_db_query:" . mysql_error()); // Here the table attributes from the $table_params variable are added print("<TABLE $table_params >\n"); // optionally print a bold header at top of table if($header_bool) { print("<TR>"); for($column_num = 0; $column_num < $column_count; $column_num++) { $field_name = mysql_field_name($result_id, $column_num); print("<TH>$field_name</TH>"); } print("</TR>\n"); } // print the body of the table while($row = mysql_fetch_row($result_id)) { print("<TR ALIGN=LEFT VALIGN=TOP>"); for($column_num = 0; $column_num < $column_count; $column_num++) { print("<TD>$row[$column_num]</TD>\n"); } print("</TR>\n"); } print("</TABLE>\n"); } function display_db_table($tablename, $connection, $header_bool, $table_params) { $query_string = "SELECT * FROM $tablename"; display_db_query($query_string, $connection, $header_bool, $table_params); } ?> <HTML><HEAD><TITLE>Displaying a MySQL table</TITLE></HEAD> <BODY> <TABLE><TR><TD> <?php //In this example the table name to be displayed is static, but it could be taken from a form $table = "submits"; display_db_table($table, $global_dbh, TRUE, "border='2'"); ?> </TD></TR></TABLE></BODY></HTML> 

ma ottengo ???????? come i risultati: ecco l'output: alt text

Dov'è il mio errore?

Quattro buoni passaggi per get sempre text UTF-8 codificato correttamente:

1) Esegui questa query prima di qualsiasi altra query:

  mysql_query("set names 'utf8'"); 

2) Aggiungi questo al tuo HTML head:

  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 

3) Aggiungi questo in cima al tuo codice PHP:

  header("Content-Type: text/html;charset=UTF-8"); 

4) Salva il tuo file con UTF-8 without BOM codifica UTF-8 without BOM utilizzando Notepad ++ o qualsiasi altro editor di text / IDE.

Non stai definendo la tua pagina HTML come UTF-8. Vedi questa domanda sui modi per farlo.

Potrebbe inoltre essere necessario impostare la connessione del database esplicitamente su UTF8. Fare un

 mysql_query("SET NAMES utf8;"); 

^ Mettilo nel tuo script di connessione al database o includi e assicurati di averlo messo prima di fare tutte le query necessarie. Inoltre, per la collocazione, prenditi il ​​tempo necessario per assicurarti che la tua impostazione per il tuo tipo di syntax e general_ci sembra funzionare bene per me quando viene utilizzato. Come finale, svuota la cache dopo aver sbattuto la testa, imposta il browser sulla codifica appropriata toolbar-> Visualizza-> Codifica

L'impostazione della connessione a UTF8 dopo aver stabilito la connessione si occupa del problema. Non farlo se il primo passaggio funziona già.

Imposta il set di caratteri come utf8 come segue:

 $conn = new mysqli($servername, $username, $password, $dbname); $conn->set_charset("utf8"); 

prova questo :

 mysql_set_charset('utf8', $yourConnection); 

I vecchi modi sono stati deprecati. Se si utilizza PHP> 5.0.5 e si utilizza mysqli, la nuova syntax è ora:

 $connection->set_charset("utf8") 

Dove $connection è un riferimento alla tua connessione al DB.