0

私は以下のmysql接続を持っています:

$dbLink = mysql_connect('127.0.0.1', 'root', '');
mysql_set_charset('utf8', $dbLink);
mysql_select_db('test', $dbLink);
mysql_set_charset('utf-8'); 

1 週間前は正常に動作していましたが、突然、データベースに保存されている utf-8、アラビア語、または Unicode のコンテンツが表示されなくなりました。しかし、データベースでも文字が変更さسید احمد Ø´Ûید Ú©ÛŒ صحیح れ、phpでも同じように表示されます。すべてが完璧になる前に。コンテンツは適切に表示されていました。

今でも、データベースに新しいエントリを作成すると、問題なく表示されますが、古いエントリで何か問題が発生しました。助けてください........

セット名 mysql_set_charset & を試しまし<meta http-equiv="Content-Type" content="text/html; charset=utf-8">たが、何も起こりませんでした。そうしないと、私のサイトがハングアップします......

4

1 に答える 1

0

MYSQL は非推奨になったため、MYSQLi を使用してください。

文字セット utf-8 を設定するには、次のように mysqli_set_charset() を使用します。

$dbLink = mysqli_connect('127.0.0.1', 'root', '');
mysqli_set_charset($dbLink , 'utf8');
mysqli_select_db($dbLink, 'test');

何らかの理由でまだ間違った文字が表示される場合は、これをドキュメントの先頭に追加します。

// Tell PHP that we're using UTF-8 strings until the end of the script
mb_internal_encoding('UTF-8');

// Tell PHP that we'll be outputting UTF-8 to the browser
mb_http_output('UTF-8');

アップデート

データベースからいくつかのコンテンツを選択し、次を使用して値を出力しiconv()、wright charset が表示されるかどうかを確認します。

<?php

    $dbLink = mysqli_connect('127.0.0.1', 'root', '');
    mysqli_set_charset($dbLink , 'utf8');
    mysqli_select_db($dbLink, 'test');

    function get_table_contents(){
        global $dbLink;
        $contents = array();

        $query = "SELECT * FROM ||YOUR TABLE HERE||";
        $result = mysqli_query($connection, $query);

        while($content = mysqli_fetch_assoc($result)){
            $contents[] = $content;
        }
        return $contents;
    }

    $data = get_table_contents();

?>
<html>
   <head></head>
   <body>
      <?php echo iconv(mb_detect_encoding($data[0]['||YOUR COLUMN||'], "UTF-8,ISO-8859-1"), "UTF-8", $data[0]['||YOUR COLUMN||']); ?>
   </body>
</html>
于 2013-10-13T00:03:03.377 に答える