Как создать файл с неизвестной кодировкой символов - PullRequest
0 голосов
/ 26 июня 2019

Я хотел бы протестировать некоторые функции обнаружения кодировки символов файлов, в которые я вводил файлы типа UTF-8, windows-1252, ISO-8859-1 и т. Д.

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

Я не нашел хорошего способа создания файлов с неизвестной или необнаружимой кодировкой символов.

Ответы [ 2 ]

1 голос
/ 29 июня 2019
head -c1024 /dev/random > /tmp/badencoding

Это почти наверняка то, что вы хотите на практике (1 КБ случайных данных), но на самом деле не существует хорошего определения "необнаружимой кодировки символов". Этот случайный файл является легальным 8-битным ASCII. Тот факт, что это, конечно, не означает, что означает быть 8-битным ASCII, является просто эвристическим. Таким образом, все, что вы собираетесь сделать, это проверить, что ваш алгоритм работает так, как этого хотят ваши пользователи; здесь нет окончательного «правильного», не прочитав мысли человека, который создал файл.

0 голосов
/ 29 июня 2019

Пустой текстовый файл имеет необнаружимую кодировку символов (кроме случаев, когда он имеет спецификацию Unicode).

Но, по сути, вы должны либо потребовать от пользователя указать, какую кодировку символов использует файл, который он вам дает, либо указать, какой из них использовать (или оба, если вы задаете значение по умолчанию, но допускаете его переопределение [которое это то, что делают многие компиляторы.]).

Затем вы можете проверить содержимое на предмет соответствия согласованной кодировке символов. Это вызовет некоторые ошибки, но обратите внимание, что многие кодировки символов допускают любую последовательность байтов с любым значением, поэтому любой контент всегда действителен (даже если кодировка символов отличается от той, что использовалась для записи файла).

Затем вы можете проверить соответствие ожидаемым значениям, таким как некоторый синтаксис или допустимый символ или слова, чтобы отследить больше ошибок (но вы не обязательно сможете сказать, что кодировка символов не совпадает; это может быть просто содержание неверно).

Для создания файлов с различной кодировкой символов вы можете написать программу или использовать стороннюю программу, такую ​​как iconv или PowerShell.

Если вам нужна неизвестная кодировка символов, просто сгенерируйте случайную целочисленную карту, преобразуйте файл, сбросьте карту, и тогда даже вы ее не узнаете.

В конечном счете, текстовые файлы являются слишком техническими для пользователей, чтобы иметь с ними дело. Дайте им какой-нибудь другой вариант, например открытый документ или формат электронной таблицы, например .odt, .docx, .ods или .xlsx. Они очень легко читаются программами.

...