2010-09-10 12 views
8

Mam tabeli MySQL z zawartościąodczytu UTF-8 treści z tabeli mysql

struktura jest tutaj:

alt text

Teraz mam jeden rekord w nim:

alt text

Chcę przeczytać i wydrukować zawartość tej tabeli do html To jest mój kod:

<?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> 

ale dostaję ???????? jako wynik: tutaj jest wyjście: alt text

Gdzie jest mój błąd?

Odpowiedz

18

Cztery dobre kroki, aby zawsze uzyskać poprawnie zakodowany w UTF-8 text:

1) Uruchom ten zapytania przed każdym innym zapytania:

mysql_query("set names 'utf8'"); 

2) Dodaj to do głowy HTML:

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

3) Dodaj ten w górnej części kodu PHP:

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

4) Zapisz plik za pomocą UTF-8 without BOM kodowania przy użyciu Notepad++ lub dowolnego innego dobrego edytora tekstu/IDE.

+0

dziękuję masz: D – Alireza

+0

Nie ma za co. – shamittomar

+0

dobrze jest ustawić nie tylko nazwy, ale także sortowanie. –

5

Nie definiujesz swojej strony HTML jako UTF-8. Zobacz this question na temat sposobów.

You może również trzeba ustawić swoje połączenie z bazą danych jawnie na UTF8. Robi

mysql_query("SET NAMES utf8;"); 

^ Umieścić go tuż pod swoim skrypcie połączenia z bazą danych lub zawierać i upewnij się, że jest umieszczony przed wykonaniem wszelkich niezbędnych kwerend. Ponadto, dla kolokacji, poświęć trochę czasu, aby upewnić się, że ustawienie dla twojego prawidłowego typu składni i general_ci wydaje się dobrze działać, gdy zostanie użyte. Na koniec wyczyść pamięć podręczną po uderzeniu w głowę, ustaw w przeglądarce odpowiedni pasek narzędzi do kodowania-> widok-> kodowanie

Ustawienie połączenia z UTF8 po nawiązaniu połączenia zajmuje się problemem. Nie rób tego, jeśli pierwszy krok już działa.

+0

dzięki człowieku! jesteś wspaniały! – Alireza

0

spróbuj tego:

mysql_set_charset('utf8', $yourConnection); 
0

Stare sposoby są nieaktualne. Jeśli używasz PHP> 5.0.5 i przy użyciu mysqli się new syntax jest teraz:

$connection->set_charset("utf8") 

Gdzie $connection jest nawiązaniem do połączenia z DB.

2

Ustaw charset jako utf8 następująco:

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