Чтение текстового файла на персидском языке (символы Юникода) с помощью php


Я читаю один персидский текстовый файл (с использованием 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)

Имя файла: ����� ���� ��� ��������� ( ОБУЧАЮЩАЯ СЕТЬ)

Author: Jason Sturges, 2012-09-25

3 answers

Причина, по которой вы видите это, заключается в том, что вы просто повторяете содержимое в сыром виде. Вашему браузеру потребуется дополнительная информация, чтобы отобразить сообщение в правильном виде.

Самый простой способ - использовать приведенный ниже фрагмент кода.

/* 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 должна быть выполнена в начале вывода в браузер. Так, например, если у вас есть дополнительные данные, которые отображаются до этой функции, вам нужно переместить оператор заголовка в верхний. В противном случае вы получите предупреждения на экране о том, что заголовки уже установлены.

 5
Author: Nikolaos Dimopoulos, 2012-09-25 18:31:56

Вам нужно будет убедиться, что страница, на которой вы отображаете текстовый файл, имеет правильную кодировку.

 0
Author: Zathrus Writer, 2012-09-25 18:19:40

Окончательное и лучшее решение заключается в следующем: используйте эту строку под своим соединением

mysqli_set_charset( $con, 'utf8');

Вот так:

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

И в конце добавьте эту строку прямо под тегом head в свой html, чтобы убедиться, что ваша страница имеет кодировку utf-8, например:

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

И это все. вы можете прочитать официальный документ здесь: pph.net кодировка

 0
Author: AmirahmadAdibi, 2016-05-19 18:50:36