3

我正在借助以下代码阅读一个波斯文本文件(使用 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)

名称文件:����������������������(学习网络)

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 回答