LINUX版本红帽企业Linux ES版本4
我需要确认一个数据库的提取是否正确输出了UTF-8编码的数据。 我使用数据库供应商指定的机制创build了该文件,但是当我这样做时
$ file extract.txt
它返回
ASCII text, with very long lines
但是,当我从主要的提取文件创build一个子文件,并做了
$ file sub_extract.txt
它返回
UTF-8 Unicode text, with very long lines
因此,我的文件确实可以,文件命令有一些限制吗? 有没有更好的方法来检查一个文件是否包含UTF-8数据?
file命令仅使用文件的开头来检查其内容(出于性能原因)。 如果您的文件在开头只包含ascii字符,则file命令会将该文件报告为ASCII。
如果提取的文件在开头(或BOM-Header)中包含UTF-8字符,则该命令会将该文件报告为UTF-8(如第二个示例中所示)。
有关幻数和文件头的更多信息,请参阅文件的手册页。
如果您导出仅包含英文文本和公共控制字符的数据库,并且将在导出中将例如BASE64中的任何二进制数据编码,则ASCII和UTF-8将完全相同,除非存在明确的BOM。
PS:UTF-16是一个不同的动物,尤其是因为它可以看起来像一些工具完全正常的ASCII文本,将其他人看起来空白,并会混淆其他人到最后(我已经看到一些版本的Perl读取和写它罚款,完全不符合文本与正则expression式…)