87 votes

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

Pour la mise en page, nous avons notre fameux texte "Lorem ipsum" pour tester ce à quoi il ressemble.

Ce que je recherche, c'est un ensemble de fichiers contenant du texte codé avec plusieurs codages différents que je peux utiliser dans mes tests JUnit pour tester certaines méthodes qui traitent du codage des caractères lors de la lecture de fichiers texte.

Exemple :

Avoir un ISO 8859-1 et un fichier de test codé Windows-1252 fichier test codé. Les Windows-1252 doivent 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 qqch - nous aimons tous ces trucs d'encodage, n'est-ce pas ? :-)

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

1 votes

+1 : Je viens de passer pas mal de temps à implémenter un décodeur UTF-8. Gérer tous les cas particuliers nécessite plus de tests unitaires que vous ne le pensez.

4 votes

"Texte codé avec plusieurs codages différents" : pour une bonne couverture, vous voulez également des échantillons de séquences d'octets qui contiennent des octets invalides. Selon la page Wikipedia UTF-8, une mauvaise gestion de ces cas a introduit des failles de sécurité dans certains produits de premier plan.

0 votes

@Raedwald Bien sûr, c'est un bon point. Je n'en étais pas conscient. À mon avis, c'est une raison de plus pour disposer d'une suite de test mature pour les problèmes d'encodage. Il n'est pas nécessaire que ce soit un ensemble de fichiers. Il peut également s'agir d'une bibliothèque fournissant des données de test qui peuvent être utilisées dans les tests JUnit. Par exemple, elle peut fournir des séquences d'octets critiques/invalides pour les jeux de caractères courants et des chaînes de référence pour la comparaison après le décodage de séquences d'octets échantillons. Juste quelques réflexions et je me demande comment ce truc d'encodage a été testé dans toutes les librairies autour ...

42voto

Tomasz Nurkiewicz Points 140462

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

Zaó gl ja

qui contient les 9 diacritiques polonais dans une phrase correcte. Un autre indice de recherche utile est pangrammes : des phrases utilisant chaque lettre de l'alphabet au moins une fois :

  • en espagnol, " La chauve-souris indienne rapide mangeait volontiers du chardon et du kiwi. La cigogne jouait du saxophone derrière le palenque de paille. " (les 27 lettres et diacritiques).

  • en russe, " , " (les 33 lettres de l'alphabet cyrillique russe).

Liste des pangrammes contient un résumé exhaustif. Quelqu'un pourrait-il emballer tout cela dans un simple ?

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

bibliothèque ?

1 votes

C'est certainement une réponse +1. Je vais attendre un peu en espérant qu'il y ait vraiment un ensemble de fichiers de test bien pensé. Parce qu'il y a des encodages construits par-dessus 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.

28voto

Daniel Teply Points 1251

Et si vous essayiez d'utiliser le UNITÉ DE SOINS INTENSIFS les fichiers de la suite de tests ? Je ne sais pas s'ils correspondent à ce dont vous avez besoin pour votre test, mais ils semblent avoir des fichiers de correspondance UTF de/vers assez complets, au moins : Lien vers le repo pour les fichiers de test de l'ICU

0 votes

+1 mon préféré jusqu'à présent. J'ai lu la documentation pendant une heure et elle semble fournir tout ce dont j'ai besoin - au moins pour les choses liées à l'unicode.

0 votes

Je pense que c'est vraiment la meilleure réponse jusqu'à présent. Je l'ai acceptée et j'espère qu'elle vous vaudra une certaine réputation. Si vous aviez répondu une semaine plus tôt, je suis sûr que vous auriez obtenu de bien meilleurs résultats que les autres réponses ici. En tout cas, merci !

8voto

Optimist Points 299

Je ne connais pas de documents textuels complets, mais si vous pouvez commencer par un simple aperçu de tous les jeux de caractères, il existe quelques fichiers disponibles à l'adresse suivante serveur ftp.unicode.org

Voici l'exemple de Windows-1252. La première colonne est la valeur hexadécimale du caractère, et la seconde la valeur unicode.

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

0 votes

+1 Merci pour votre effort. Ressource très intéressante de fichiers.

1voto

Sandeep Nair Points 2544

J'ai utilisé un outil en ligne pour créer mes jeux de caractères à partir de Lorem Ipsum. Je pense que cela peut vous aider. Je n'en ai pas un qui présente tous les différents jeux de caractères sur une seule page.

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

4 votes

Lorem ipsum ne comporte que des caractères latins, puisqu'il est en latin. Ce n'est pas ce qui est demandé ici. BTW : repo1.maven.org/maven2/org/codeswarm/lipsum/1.0

1voto

Xavi Montero Points 1791

Il existe quelques configurations unicode complètes prêtes à l'emploi. téléchargeable directement .

De w3c

Ici, il y a un joli fichier de test par w3.org notamment : mathématiques, linguistique, grec, géorgien, russe, thaï, runes, braille et bien d'autres dans un seul fichier :

Venant de w3.org, il devrait être agréable à utiliser, n'est-ce pas ?

Découper la partie HTML

Si vous voulez obtenir le "fichier txt original" sans risquer que votre éditeur ne l'abîme, 1) téléchargez, 2) faites un tail+head, 3) vérifiez avec un diff :

wget https://www.w3.org/2001/06/utf-8-test/UTF-8-demo.html
tail +8 UTF-8-demo.html | head -n -3 > UTF-8-demo.txt
diff UTF-8-demo.html UTF-8-demo.txt

Cela génère un UTF-8-demo.txt sans intervention humaine et sans risque de perte de données.

Plus de w3c

Il y a beaucoup plus de fichiers un niveau plus haut dans la structure du répertoire, toujours à l'intérieur du répertoire utf-8-test :

Depuis github

Il y a également un fichier très intéressant ici avec TOUS les caractères imprimables (y compris les caractères chinois, braille, arabes, etc.).

Vous voulez aussi des caractères non imprimables ?

Il y a aussi beaucoup plus de fichiers de test dans le même dépôt :

et aussi un générateur si vous ne faites pas confiance au fichier engagé et que vous voulez le générer vous-même.

Mon choix personnel

J'ai décidé que pour mes projets, je commencerai avec 2 fichiers : Celui spécifique que j'ai pointé du w3c et celui spécifique que j'ai pointé du repo github par bits.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X