Есть ли у файла в Windows атрибут кодировки? - PullRequest
3 голосов
/ 01 июля 2011

Я читал об этой проблеме, пытаясь выяснить фактическую кодировку файла и все ее сложности.Но мне просто нужно знать, какая кодировка файла была установлена ​​при его сохранении.Хранит ли Windows эту информацию где-то, похожую на тип файла, дату изменения и т. Д.,

Ответы [ 2 ]

4 голосов
/ 02 июля 2011

Это не доступно. Файловая система Windows (NTFS) не хранит никаких метаданных для файла, кроме тривиальных вещей, таких как имя, расширение, дата последнего написания и так далее. Ничего особенного для типа файла.

Все, что у вас есть, это BOM, байты в начале файла, которые указывают кодировку UTF и порядок байтов. Он существует только для файлов, закодированных в UTF, и, к сожалению, не является обязательным. Однако настоящими источниками беспокойства являются текстовые файлы, которые были закодированы с определенной 8-битной кодовой страницей, отличной от Unicode. Обычно создается устаревшим приложением. Вы ничего не можете сделать для этого, но надеетесь, что файл не был создан слишком далеко от вашего компьютера, поэтому системная кодовая страница по умолчанию соответствует.

2 голосов
/ 02 июля 2011

Ни одна операционная система не сохраняет информацию о кодировке в файл.кодировка является свойством только текстового файла.Поскольку некоторые текстовые файлы не имеют расширения .txt, а некоторые файлы .txt на самом деле не являются текстовыми файлами, привязка кодировки к файлу не имеет особого смысла.

Некоторые файлы UTF-8 хранят метку порядка байтов(BOM) в начале файла, который можно использовать для проверки, является ли это файл UTF-8 или нет.Однако спецификация присутствует не всегда, и для файла UTF-8 не обязательно иметь спецификацию.Таким образом, единственный способ определить кодировку текстового файла - открыть его другим методом кодирования, пока вы не сможете прочитать файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...