Gibt es eine Reihe von "Lorem ipsums" -Dateien zum Testen von Problemen mit der Zeichenkodierung?

85

Für das Layout haben wir unseren berühmten "Lorem ipsum" -Text, um zu testen, wie er aussieht.

Was ich suche, ist eine Reihe von Dateien, die Text enthalten, der mit verschiedenen Codierungen codiert ist, die ich in meinen JUnit-Tests verwenden kann, um einige Methoden zu testen, die sich mit der Zeichencodierung beim Lesen von Textdateien befassen.

Beispiel:

Eine ISO 8859-1codierte Testdatei und eine Windows-1252codierte Testdatei haben. Das Windows-1252 muss die Unterschiede in Region 80 16 - 9F 16 auslösen . Mit anderen Worten, es muss mindestens ein Zeichen dieser Region enthalten, um sie von ISO 8859-1 zu unterscheiden.

Der vielleicht beste Satz von Testdateien ist der, bei dem die Testdatei für jede Codierung alle Zeichen einmal enthält. Aber vielleicht ist mir etw nicht bewusst - wir alle mögen dieses Kodierungsmaterial, oder? :-)

Gibt es so eine Reihe von Testdateien für Zeichencodierungsprobleme?

Fabian Barney
quelle
1
+1: Ich habe gerade ziemlich viel Zeit damit verbracht, einen UTF-8-Decoder zu implementieren. Die Bearbeitung aller Eckfälle erfordert mehr Komponententests als Sie vielleicht denken.
Raedwald
4
"Text mit mehreren verschiedenen Codierungen codiert": Für eine gute Abdeckung möchten Sie auch Beispielbyte-Sequenzen, die ungültige Bytes enthalten. Laut der Wikipedia-Seite UTF-8 hat die falsche Behandlung dieser Fälle Sicherheitslücken in einigen hochkarätigen Produkten verursacht.
Raedwald
@ Raedwald Das ist natürlich ein guter Punkt. Das war mir nicht bewusst. Meiner Meinung nach nur ein Grund mehr für eine ausgereifte Testsuite für Codierungsprobleme. Es muss sich nicht um eine Reihe von Dateien handeln. Es kann sich auch um eine Bibliothek handeln, die Testdaten bereitstellt, die in JUnit-Tests verwendet werden können. Beispielsweise können kritische / ungültige Byte-Sequenzen für allgemeine Zeichensätze und Referenzzeichenfolgen zum Vergleich nach dem Decodieren von Beispiel-Byte-Sequenzen bereitgestellt werden. Nur ein paar Gedanken und ich frage mich, wie dieses Codierungsmaterial in allen Bibliotheken getestet wurde ...
Fabian Barney

Antworten:

26

Wie wäre es mit dem Versuch, die ICU -Testsuite-Dateien zu verwenden? Ich weiß nicht, ob sie das sind, was Sie für Ihren Test benötigen, aber sie scheinen zumindest ziemlich vollständige von / zu UTF-Zuordnungsdateien zu haben: Link zum Repo für ICU-Testdateien

Daniel Teply
quelle
+1 mein Favorit bisher. Ich habe die Dokumentation 1 Stunde lang gelesen und sie scheint alles zu bieten, was ich brauche - zumindest für Unicode-bezogene Dinge.
Fabian Barney
Ich denke, das ist wirklich die beste Antwort bisher. Ich habe es akzeptiert und hoffe, dass Sie einen guten Ruf dafür bekommen. Wenn ich eine Woche zuvor geantwortet hätte, wäre es sicher viel besser gewesen als bei anderen Antworten hier. Trotzdem danke!
Fabian Barney
41

Der Wikipedia-Artikel über Diakritika ist ziemlich umfangreich, leider müssen Sie diese Zeichen manuell extrahieren. Es kann auch einige Mnemoniken für jede Sprache geben. Zum Beispiel verwenden wir auf Polnisch:

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

welches alle 9 polnischen Diakritika in einem richtigen Satz enthält. Ein weiterer nützlicher Suchhinweis sind Pangrams : Sätze, bei denen jeder Buchstabe des Alphabets mindestens einmal verwendet wird :

  • auf Spanisch " 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. " (alle 27 Buchstaben und Diakritika).

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

Die Liste der Pangrams enthält eine vollständige Zusammenfassung. Jeder möchte dies in einem einfachen Paket verpacken:

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

Bibliothek?

Tomasz Nurkiewicz
quelle
1
Dies ist sicher eine +1 Antwort. Ich werde ein bisschen warten in der Hoffnung, dass es wirklich eine gut durchdachte Reihe von Testdateien gibt. Da es Codierungen gibt, die auf anderen usw. aufbauen. Ich denke, es wäre sehr gut, Testdateien für jede Codierung zu haben, die die Unterschiede auslösen. Aber vielleicht irre ich mich und es gibt gute Gründe, warum sie nicht existieren oder so.
Fabian Barney
1

Nun, ich hatte ein Online-Tool verwendet, um meine Textzeichensätze aus Lorem Ipsum zu erstellen. Ich glaube, es kann dir helfen. Ich habe keine, die alle verschiedenen Zeichensätze auf einer einzigen Seite enthält.

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

Sandeep Nair
quelle
4
Lorem ipsum besteht nur aus lateinischen Zeichen, wie es in Latein ist. Dies wird hier nicht gefragt. Übrigens
Tomasz Nurkiewicz