我在 Windows 中有一个文件 UTF-8 编码,当我在 Windows 下使用它时,它显示一切正确,但是当我在 Linux 中复制文件时,Unicode 字符是乱码。该文件是纯文本文件。我怎样才能让这个文件在 linux 中可读,或者我怎样才能正确复制它?
提前致谢
看起来像 Apache/PHP 问题
您是否通过 PHP 的内置 htmlspecialchars 方法(或类似方法)运行字符串?如果是这样,您可能需要将其编码切换为 UTF8
而不是htmlspecialchars($mytext)
,尝试使用htmlspecialchars($mytext, ENT_COMPAT, 'UTF-8')
请注意以下(我之前的回答)是不正确的,正如 Michael Burr 所指出的,UTF-8 不需要或使用 BOM。
如果只是文本,则可能缺少字节顺序标记 (BOM),或者使用不正确的 BOM 进行编码。
如果它不正确,Linux 阅读器可能会尊重它,但您的 Windows 阅读器会忽略它。尝试在 Notepad++ 中重新打开文件并重新保存。Notepad++ 在格式菜单中有很多关于保存 UTF-8 文件的选项。
确保您已以二进制模式传输文件。也试试iconv。
文件本身很好。在将文本发送到浏览器之前,管道中的其他东西正在搞砸文本。在应用程序的各个点回显文本,以查明是哪个操作破坏了它。