Чтение текстового файла на персидском языке (символы Юникода) с помощью 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)
Имя файла: ����� ���� ��� ��������� ( ОБУЧАЮЩАЯ СЕТЬ)
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
должна быть выполнена в начале вывода в браузер. Так, например, если у вас есть дополнительные данные, которые отображаются до этой функции, вам нужно переместить оператор заголовка в верхний. В противном случае вы получите предупреждения на экране о том, что заголовки уже установлены.
Вам нужно будет убедиться, что страница, на которой вы отображаете текстовый файл, имеет правильную кодировку.
Окончательное и лучшее решение заключается в следующем: используйте эту строку под своим соединением
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 кодировка