如何创建一个波斯 file.txt 然后爆炸它?

How to create a Persian file.txt and then explode it?

我有很多波斯语文本,我想分解它,我将我的文本存储在 file.txt 中。 (所以我有一个 file.text 包含波斯语文本)。现在我的问题是字符集。当我将文本保存到 file.text 时,它给我一个错误:

This file contains characters in Unicode format which will be lost if you save this file as a ANSI encoded text file. To keep the Unicode information, click cancel below and then select one of the Unicode options from the Encoding drop down list. Continue?

我继续。现在我打开file.text所有字符都很好,当我打开它时,所有字符都崩溃了。

注意: 当我将文本放入 php 变量时,一切正常,实际上我的问题是 file.text.

我该怎么办?

我的代码: (用于爆炸)

$text=file_get_contents('file.txt');
$var = explode("\n", $text);
foreach ($var  as $sentence) {
        echo $sentence.'<br>';  // or save into databse
    }

确保以 UTF-8 编码保存文本文件。 (为你的 HTML 输出和数据库连接使用 UTF-8,以匹配。)

如果您将文件保存为 Microsoft 误称为“Unicode”的编码,您实际上会得到 UTF-16LE,这是一种双字节、非 ASCII 兼容的编码,通常不是一个好主意。

PHP 的基本字符串操作如 explode 以字节为基础进行操作,因此如果您将 UTF-16 拆分为单个 \n 字节,您最终将拆分中间的两个字节字符并弄乱了以下字符串(以及每个备用字符串)的字节顺序。

使用一个像样的文本编辑器,它可以让你保存为没有 BOM 的 UTF-8,因为记事本会在文件的开头给你一个 UTF-8-faux-BOM,这意味着当你阅读它时在 PHP 你的第一行(但 none 的其他行)将在字符串的开头有一个 U+FEFF 字节顺序标记字符,导致广泛的结论。

首选默认以 BOM-free-UTF-8 格式保存的文本编辑器。 Notepad 对 ANSI、UTF-16LE 和仿 BOM 的偏好使其成为 web 编辑器的一个非常糟糕的选择。