Czy istnieje zestaw plików „Lorem ipsums” do testowania problemów z kodowaniem znaków?

85

Do tworzenia układu mamy nasz słynny tekst „Lorem ipsum”, aby sprawdzić, jak wygląda.

To, czego szukam, to zestaw plików zawierających tekst zakodowany za pomocą kilku różnych kodowań, których mogę użyć w moich testach JUnit, aby przetestować niektóre metody, które zajmują się kodowaniem znaków podczas czytania plików tekstowych.

Przykład:

Posiadanie ISO 8859-1zakodowanego pliku testowego i Windows-1252zakodowanego pliku testowego. Windows-1252 musi wywołać różnice w regionie 80 16 - 9F 16 . Innymi słowy, musi zawierać co najmniej jeden znak z tego regionu, aby odróżnić go od ISO 8859-1.

Być może najlepszym zestawem plików testowych jest ten, w którym plik testowy dla każdego kodowania zawiera raz wszystkie swoje znaki. Ale może nie jestem tego świadomy - wszyscy lubimy to kodowanie, prawda? :-)

Czy istnieje taki zestaw plików testowych do rozwiązywania problemów z kodowaniem znaków?

Fabian Barney
źródło
1
+1: Właśnie spędziłem sporo czasu na implementowaniu dekodera UTF-8. Obsługa wszystkich przypadków narożnych wymaga więcej testów jednostkowych, niż mogłoby się wydawać.
Raedwald
4
„Tekst zakodowany przy użyciu kilku różnych kodowań”: aby uzyskać dobre pokrycie, potrzebujesz również przykładowych sekwencji bajtów, które zawierają nieprawidłowe bajty. Według strony Wikipedii UTF-8, niewłaściwe postępowanie w tych przypadkach spowodowało powstanie luk w zabezpieczeniach niektórych głośnych produktów.
Raedwald
@Raedwald Oczywiście, to dobra uwaga. Nie byłem tego świadomy. Moim zdaniem jeszcze jeden powód dla dojrzałego zestawu testów do problemów z kodowaniem. Nie musi to być zestaw plików. Może to być również biblioteka udostępniająca dane testowe, które można wykorzystać w testach JUnit. Na przykład może dostarczyć krytyczne / nieprawidłowe sekwencje bajtów dla wspólnych zestawów znaków i ciągów referencyjnych do porównania po zdekodowaniu przykładowych sekwencji bajtów. Tylko kilka przemyśleń i zastanawiam się, jak to kodowanie zostało przetestowane we wszystkich bibliotekach w pobliżu ...
Fabian Barney,

Odpowiedzi:

26

A może spróbujesz użyć plików pakietu testów ICU ? Nie wiem, czy są one tym, czego potrzebujesz do testu, ale wydaje się, że mają całkiem kompletne pliki mapowania z / do UTF przynajmniej: Link do repozytorium plików testowych ICU

Daniel Teply
źródło
Daj +1 mojemu ulubionemu jak dotąd. Czytam dokumentację przez 1 godzinę i wydaje mi się, że zapewnia wszystko, czego potrzebuję - przynajmniej do rzeczy związanych z Unicode.
Fabian Barney
Myślę, że to jak dotąd najlepsza odpowiedź. Zaakceptowałem to i mam nadzieję, że zdobędziesz za to reputację. Gdybym odpowiedział tydzień wcześniej, jestem pewien, że uzyskałby znacznie lepszy wynik w porównaniu z innymi odpowiedziami tutaj. W każdym razie dzięki!
Fabian Barney
41

Artykuł Wikipedii na temat znaków diakrytycznych jest dość obszerny, niestety musisz ręcznie wyodrębnić te znaki. Mogą również istnieć pewne mnemoniki dla każdego języka. Na przykład w języku polskim używamy:

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

który zawiera wszystkie 9 polskich znaków diakrytycznych w jednym poprawnym zdaniu. Kolejną przydatną wskazówką przy wyszukiwaniu są pangramy : zdania zawierające przynajmniej raz każdą literę alfabetu :

  • w języku hiszpańskim „ 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. ” (wszystkie 27 liter i znaki diakrytyczne).

  • w języku rosyjskim „ Съешь же ещё этих мягких французских булок, да выпей чаю ” (wszystkie 33 rosyjskie litery cyrylicy).

Lista pangramów zawiera wyczerpujące podsumowanie. Każdy, kto chce zawrzeć to w prostym:

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

biblioteka?

Tomasz Nurkiewicz
źródło
1
Na pewno jest to odpowiedź +1. Poczekam trochę w nadziei, że istnieje naprawdę dobrze przemyślany zestaw plików testowych. Ponieważ istnieją kodowania budowane na innych, itp. Myślę, że byłoby bardzo dobrze mieć pliki testowe dla każdego kodowania wyzwalającego różnice. Ale może się mylę i są dobre powody, dla których one nie istnieją.
Fabian Barney
1

Cóż, użyłem narzędzia online do stworzenia moich zestawów znaków tekstowych z Lorem Ipsum. Wierzę, że to może ci pomóc. Nie mam takiego, który ma wszystkie różne zestawy znaków na jednej stronie.

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

Sandeep Nair
źródło
4
Lorem ipsum składa się tylko ze znaków łacińskich, tak jak w przypadku łaciny. Nie o to tutaj chodzi. BTW: repo1.maven.org/maven2/org/codeswarm/lipsum/1.0
Tomasz Nurkiewicz