Версия LINUX Red Hat Enterprise Linux ES, выпуск 4
Мне нужно подтвердить, правильно ли выводит выдержка из базы данных в кодировке UTF-8. Я создал файл, используя механизм, указанный поставщиком базы данных, но когда я это сделал
$ file extract.txt
он вернулся
ASCII text, with very long lines
Однако, когда я создал вспомогательный файл из основного файла извлечения и сделал
$ file sub_extract.txt
он вернулся
UTF-8 Unicode text, with very long lines
Следовательно, мой файл на самом деле в порядке, и есть некоторые ограничения для команды файла? Есть ли лучший способ проверить, содержит ли файл данные UTF-8?
Команда file использует только начало файла для проверки его содержимого (по соображениям производительности). Если ваш файл содержит только символы ascii в начале, команда file сообщает файл как ASCII.
Если извлеченный файл содержит символы UTF-8 в начале (или заголовок спецификации), команда сообщает файл как UTF-8 (как во втором примере).
См. Справочную страницу файла для получения дополнительной информации о магических числах и заголовках файлов.
Если вы экспортируете базу данных, которая содержит только английский текст и общие управляющие символы, и будет кодировать любые двоичные данные, например, в BASE64 при экспорте, ASCII и UTF-8 будут ТОЧНО одинаковыми, если не существует явной спецификации.
PS: UTF-16 - это другое животное, особенно потому, что он может ВЫГЛЯДИТЬ как совершенно нормальный текст ASCII для некоторых инструментов, будет выглядеть пустым для других и будет бесконечно сбивать с толку других (я видел некоторые версии perl, читающие и записывающие его отлично и полностью не соответствует тексту с регулярными выражениями ...)