0

在 Linux 服务器上,如果用户上传在 MS Office Excel 中创建的 CSV 文件(因此具有Windows 1250 [或cp1250ASCII,如果你想] 编码)我所有已知的检测文件编码的方法返回不正确的 ISO-8859-1(或latin1,如果你想)编码。

这对于将编码转换为最终的 UTF-8至关重要。

我试过的方法:

  • cli
    • file -i [FILE]返回iso-8859-1
    • file -b [FILE]返回iso-8859-1
  • vim
    • vim [FILE]然后:set fileencoding?返回latin1
  • PHP
    • mb_detect_encoding(file_get_contents($filename))返回(令人惊讶的)UTF-8

虽然文件确实在 WINDOWS-1250 (ASCII)中证明,即在 LibreOffice 中打开 CSV 文件 - 数学要求文件编码并选择ISO-8859-1UTF-8导致错误显示的字符,同时选择ASCII显示所有字符正确!

如何正确检测 Linux 服务器(Ubuntu)上的文件编码(最好使用默认的 Ubuntu 实用程序或 PHP)?

我能想到的最后一个选项是在上传文件时检测用户代理(和用户操作系统),它是windows然后自动假设编码是ASCII ...

4

0 回答 0