2013-09-23 60 views
0

我正在使用MySQLi從數據庫中檢索信息。我的所有頁面都使用UTF-8編碼,沒有BOM,我有2個頁面需要處理,但主要問題是數據庫中信息以常規方式顯示 - 但是當我檢索它時,它會像這樣:編碼爲希伯來語 - PHP,mysqli

- ?

在phpMyAdmin面板 - 列是latin1_general_ci(我試圖使它utf8_general以及 - 相同的輸出!)。

的 「mysql.php」:

<?php 
header('Content-type: text/xhtml; charset=windows-1255'); 
$mysql = new mysqli('localhost', 'elenbyin_vadim', 'pass33323', 'elenbyin_vadim'); 
?> 

了 「的index.php」,主要部分:

<?php 
include ('mysql.php'); 
include('functions.php'); 

if($_GET["lang"] == 'rus') 
    $lang = 'rus'; 
else if($_GET["lang"] == 'heb') 
    $lang = 'heb'; 
else 
    $lang = 'heb'; 

......

<div class="main_text"> 
<? 

    $result = $mysql->query('SELECT * FROM homepage'); 
    while($row = mysqli_fetch_array($result)){ 
     echo "".$row['title']."<br />".$row['text_heb'].""; 
    } 
?> 
</div> 
可以

人幫我解決這個問題?

回答

3

你必須要改變的字符集,它的工作:

<?php 
    $mysql->set_charset('utf8'); 
    $result = $mysql->query('SELECT * FROM homepage'); 
    ... 
?> 

@類的評論 - 如果你需要它的所有網頁,你可以把它添加到mysql.php

<?php 
    header('Content-type: text/xhtml; charset=windows-1255'); 
    $mysql = new mysqli('localhost', 'elenbyin_vadim', 'pass33323', 'elenbyin_vadim'); 
    $mysql->set_charset('utf8'); 
?> 

此外,請確保您將排序規則設置爲utf8_general_ci

一箇舊的方法將是名稱設置爲UTF8:

<?php 
    $mysql->query("SET NAMES 'utf8'"); 
    $result = $mysql->query('SELECT * FROM homepage'); 
    ... 
?> 

然而根據set_charset() docs第一是preferrable:

注意:這是要改變的字符集的優選方式。不建議使用 mysqli_query()來設置它(例如SET NAMES utf8)。 有關更多信息,請參閱MySQL字符集概念部分。

+0

非常感謝你! –

+0

沒問題@LiorElenby,很高興幫助:) –

+0

會不會更好地在'mysql.php'中添加該行# – Class