1

データベースから情報を取得するために MySQLi を使用しています。私のページはすべて BOM なしの UTF-8 でエンコードされています。2 つのページを処理する必要がありますが、主な問題はデータベースで情報が通常の方法で表示されることですが、取得すると次のようになります。

������ ����� - ���?

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>

誰かがこの問題を解決するのを手伝ってくれますか?

4

1 に答える 1

5

動作させるには、文字セットを変更する必要があります。

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

@Class のコメント - すべてのページで必要な場合は、次の場所に追加できます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()ドキュメントによると、最初の方が望ましいです。

注: これは、文字セットを変更するための推奨される方法です。mysqli_query() を使用して設定する (SET NAMES utf8 など) ことはお勧めしません。詳細については、MySQL 文字セットの概念のセクションを参照してください。

于 2013-09-23T00:53:18.983 に答える