3

以下のコードを使用して、1 つのペルシャ語のテキスト ファイルを (PHP を使用して) 読み込んでいます。

/* Reading the file name and the book (UTF-8) */
if(file_exists($SourceDirectoryFile))
{
        $NameBook  = "name.txt";
        $AboutBook = "about.txt";

        $myFile = "Computer-Technolgy/2 ($i)/".$NameBook;
        $fh = fopen($myFile, 'r');
        $theData = fread($fh, filesize($myFile));
        fclose($fh);
        echo 'Name file: '. $theData.'<hr/>';
}

name.txt ファイルの内容:

آموزش شبكه هاي کامپيوتري (LEARNING NETWORK)

ファイル名: ����� ���� ��� ���������� (LEARNING NETWORK)

4

3 に答える 3

6

これが表示される理由は、内容をそのままエコーしているためです。メッセージを正しい形式で表示するには、ブラウザにさらに情報が必要です。

最も簡単な方法は、以下のスニペットを使用することです。

/* Reading the file name and the book (UTF-8) */
if (file_exists($SourceDirectoryFile))
{

    $NameBook  = "name.txt";
    $AboutBook = "about.txt";

    // Using file_get_contents instead. Less code
    $myFile   = "Computer-Technolgy/2 ($i)/" . $NameBook;
    $contents = file_get_contents($myFile);

    // I want my browser to display UTF-8 characters
    header('Content-Type: text/html; charset=UTF-8');
    echo 'Name file: ' .  $contents . '<hr/>';
}

headerこの関数は、ブラウザへの出力の最初に実行する必要があることに注意してください。したがって、たとえば、この関数の前に表示される追加データがある場合は、ヘッダー ステートメントを一番上に移動する必要があります。そうしないと、ヘッダーが既に設定されているという警告が画面に表示されます。

于 2012-09-25T18:31:56.877 に答える
0

テキスト ファイルを表示しているページのエンコーディングが正しいことを確認する必要があります。

于 2012-09-25T18:19:40.777 に答える
0

最終的かつ最良の解決策は次のとおりです。接続の下でこの行を使用します

mysqli_set_charset( $con, 'utf8');

このような:

$con = mysqli_connect("localhost","root","amirahmad","shoutit");
mysqli_set_charset( $con, 'utf8');

最後に、この行を html の head タグのすぐ下に追加して、次のように、ページに utf-8 文字セットがあることを確認します。

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

以上です 。ここで正式なドキュメントを読むことができます:pph.net charset

于 2016-05-19T18:50:36.340 に答える