Existe-t-il un ensemble de fichiers «Lorem ipsums» pour tester les problèmes d'encodage de caractères?

85

Pour la mise en page, nous avons notre célèbre texte "Lorem ipsum" pour tester à quoi il ressemble.

Ce que je recherche, c'est un ensemble de fichiers contenant du texte encodé avec plusieurs encodages différents que je peux utiliser dans mes tests JUnit pour tester certaines méthodes traitant de l'encodage de caractères lors de la lecture de fichiers texte.

Exemple:

Avoir un ISO 8859-1fichier de test encodé et un Windows-1252fichier de test encodé. Le Windows-1252 doit déclencher les différences dans la région 80 16 - 9F 16 . En d'autres termes, il doit contenir au moins un caractère de cette région pour le distinguer de l'ISO 8859-1.

Peut-être que le meilleur ensemble de fichiers de test est celui où le fichier de test pour chaque encodage contient tous ses caractères une fois. Mais peut-être que je ne suis pas au courant de qc - nous aimons tous ce truc d'encodage, non? :-)

Existe-t-il un tel ensemble de fichiers de test pour les problèmes de codage de caractères?

Fabian Barney
la source
1
+1: Je viens de passer pas mal de temps à implémenter un décodeur UTF-8. La gestion de tous les cas secondaires nécessite plus de tests unitaires que vous ne le pensez.
Raedwald
4
"Texte encodé avec plusieurs encodages différents": pour une bonne couverture, vous voulez également des exemples de séquences d'octets contenant des octets invalides. Selon la page Wikipédia UTF-8, une mauvaise gestion de ces cas a introduit des failles de sécurité dans certains produits de haut niveau.
Raedwald
@Raedwald Bien sûr, c'est un bon point. Je n'étais pas au courant. À mon avis, juste une raison de plus pour une suite de tests mature pour les problèmes d'encodage. Il n'est pas nécessaire qu'il s'agisse d'un ensemble de fichiers. Il peut également s'agir d'une bibliothèque fournissant des données de test pouvant être utilisées dans les tests JUnit. Par exemple, il peut fournir des séquences d'octets critiques / invalides pour les jeux de caractères communs et les chaînes de référence à des fins de comparaison après le décodage des séquences d'octets d'échantillons. Juste quelques réflexions et je me demande comment ce truc d'encodage a été testé dans toutes les bibliothèques autour ...
Fabian Barney

Réponses:

26

Que diriez-vous d'essayer d'utiliser les fichiers de la suite de tests ICU ? Je ne sais pas s'ils sont ce dont vous avez besoin pour votre test, mais ils semblent au moins avoir des fichiers de mappage de / vers UTF assez complets: Lien vers le référentiel pour les fichiers de test ICU

Daniel Teply
la source
+1 mon préféré jusqu'à présent. J'ai lu dans la documentation pendant 1 heure et elle semble fournir tout ce dont j'ai besoin - au moins pour les choses liées à l'Unicode.
Fabian Barney
Je pense que c'est vraiment la meilleure réponse à ce jour. Je l'ai accepté et j'espère que vous en aurez une certaine réputation. Si j'ai répondu une semaine plus tôt, je suis sûr que cela aurait été beaucoup mieux par rapport aux autres réponses ici. En tout cas merci!
Fabian Barney
41

L'article de Wikipedia sur les signes diacritiques est assez complet, malheureusement vous devez extraire ces caractères manuellement. Il peut également exister des mnémoniques pour chaque langue. Par exemple en polonais, nous utilisons:

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

qui contient les 9 signes diacritiques polonais dans une phrase correcte. Un autre indice de recherche utiles sont pangrams : phrases en utilisant toutes les lettres de l'alphabet au moins une fois :

  • en espagnol, " 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. " (les 27 lettres et signes diacritiques).

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

La liste des pangrams contient un résumé exhaustif. Tout le monde tient à envelopper cela dans un simple:

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

bibliothèque?

Tomasz Nurkiewicz
la source
1
C'est sûr qu'il s'agit d'une réponse +1. J'attendrai un peu dans l'espoir qu'il y ait vraiment un ensemble bien pensé de fichiers de test là-bas. Parce qu'il y a des encodages construits sur d'autres, etc. Je pense que ce serait très bien d'avoir des fichiers de test pour chaque encodage déclenchant les différences. Mais peut-être que je me trompe et qu'il y a de bonnes raisons pour lesquelles ils n'existent pas ou plus.
Fabian Barney
1

Eh bien, j'avais utilisé un outil en ligne pour créer mes jeux de caractères de texte à partir de Lorem Ipsum. Je crois que cela peut vous aider. Je n'en ai pas un qui contient tous les différents jeux de caractères sur une seule page.

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

Sandeep Nair
la source
4
Lorem ipsum se compose uniquement de caractères latins, comme c'est le cas en latin. Ce n'est pas ce qui est demandé ici. BTW: repo1.maven.org/maven2/org/codeswarm/lipsum/1.0
Tomasz Nurkiewicz