文件编码检测不正确

时间:2016-01-20 12:45:32

标签: php ubuntu encoding file-encodings

在Linux服务器上,如果用户上传在MS Office Excel中创建的CSV文件(因此,如果您有 Windows 1250 [或 cp1250 ASCII )想要]编码)所有我知道的检测文件编码的方法返回不正确的 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文件 - Math要求文件编码并选择 ISO-8859-1 < / em>或 UTF-8 会导致错误显示的字符,而选择 ASCII 会正确显示所有字符!

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

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

0 个答案:

没有答案