Есть ли набор файлов «Lorem ipsums» для тестирования проблем с кодировкой символов?

85

Для верстки у нас есть наш знаменитый текст «Lorem ipsum», чтобы проверить, как он выглядит.

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

Пример:

Имея ISO 8859-1закодированный тестовый файл и Windows-1252закодированный тестовый файл. Windows-1252 должна вызывать различия в области 80 16 - 9F 16 . Другими словами, он должен содержать хотя бы один символ этого региона, чтобы отличать его от ISO 8859-1.

Возможно, лучший набор тестовых файлов - это тот, где тестовый файл для каждой кодировки содержит все свои символы один раз. Но, может быть, я не знаю, что - все мы любим это кодирование, верно? :-)

Есть ли такой набор тестовых файлов для проблем с кодировкой символов?

Фабиан Барни
источник
1
+1: Я только что потратил довольно много времени на реализацию декодера UTF-8. Чтобы справиться со всеми остальными случаями, требуется больше модульных тестов, чем вы думаете.
Raedwald
4
«Текст, закодированный с помощью нескольких различных кодировок»: для хорошего охвата вам также нужны образцы последовательностей байтов, содержащие недопустимые байты. Согласно странице Википедии UTF-8, неправильное обращение с этими случаями привело к появлению уязвимостей в безопасности в некоторых известных продуктах.
Raedwald
@Raedwald Конечно, это хороший аргумент. Я не знал об этом. На мой взгляд, это еще одна причина для зрелого набора тестов на проблемы с кодированием. Это не обязательно должен быть набор файлов. Это также может быть библиотека, предоставляющая тестовые данные, которые можно использовать в тестах JUnit. Например, он может предоставлять критические / недопустимые последовательности байтов для общих наборов символов и ссылочные строки для сравнения после декодирования выборочных последовательностей байтов. Просто некоторые мысли, и мне интересно, как это кодирование было протестировано во всех библиотеках ...
Фабиан Барни

Ответы:

26

Как насчет попытки использовать файлы набора тестов ICU ? Я не знаю, нужны ли они для вашего теста, но, похоже, у них, по крайней мере, есть довольно полные файлы сопоставления из / в UTF: Ссылка на репо для тестовых файлов ICU

Даниил Теплый
источник
+1 пока что мой любимый. Я читаю документацию в течение 1 часа, и, похоже, она предоставляет все, что мне нужно - по крайней мере, для вещей, связанных с Unicode.
Фабиан Барни
Я думаю, что это действительно лучший ответ на данный момент. Я принял его и надеюсь, что вы заработаете себе репутацию. Если бы я ответил неделей раньше, я уверен, что он набрал бы намного больше очков по сравнению с другими ответами здесь. В любом случае, спасибо!
Фабиан Барни
41

Статья в Википедии о диакритических знаках довольно обширна, к сожалению, вам придется извлекать эти символы вручную. Также для каждого языка может существовать несколько мнемоник. Например, на польском языке мы используем:

Zażółć gęślą jaźń

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

  • на испанском языке: « El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja. » (все 27 букв и диакритические знаки).

  • по-русски " Съешь же ещё этих мягких французских булок, да выпей чаю " (все 33 буквы русского кириллицы).

Список панграмм содержит исчерпывающее резюме. Любой хочет обернуть это простым:

public interface NationalCharacters {
  String spanish();
  String russian();
  //...
}

библиотека?

Томаш Нуркевич
источник
1
Конечно, это +1 ответ. Подожду немного в надежде, что существует действительно хорошо продуманный набор тестовых файлов. Поскольку есть кодировки, построенные поверх других и т.д. Я думаю, было бы очень хорошо иметь тестовые файлы для каждой кодировки, вызывающей различия. Но, возможно, я ошибаюсь и есть веские причины, по которым их не существует или так.
Фабиан Барни
8

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

Вот, например, WINDOWS-1252. Первый столбец - это значение шестнадцатеричного символа, а второй - значение Unicode.

ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1250.TXT

Оптимист
источник
+1 Спасибо за ваши усилия. Очень интересный ресурс файлов.
Фабиан Барни
1

Что ж, я использовал онлайн-инструмент для создания наборов текстовых символов из Lorem Ipsum. Я верю, что это может вам помочь. У меня нет такого, в котором были бы все разные кодировки на одной странице.

http://generator.lorem-ipsum.info /

Сандип Наир
источник
4
Lorem ipsum состоит только из латинских букв, как и в латинском. Здесь не об этом спрашивают. Кстати: repo1.maven.org/maven2/org/codeswarm/lipsum/1.0
Томаш Нуркевич