Esiste una serie di file "Lorem ipsums" per testare i problemi di codifica dei caratteri?


85

Per il layout abbiamo il nostro famoso testo "Lorem ipsum" per verificarne l'aspetto.

Quello che sto cercando è un insieme di file contenenti testo codificato con diverse codifiche diverse che posso utilizzare nei miei test JUnit per testare alcuni metodi che hanno a che fare con la codifica dei caratteri durante la lettura di file di testo.

Esempio:

Avere un ISO 8859-1file di Windows-1252prova codificato e un file di prova codificato. Windows-1252 deve attivare le differenze nella regione 80 16 - 9F 16 . In altre parole, deve contenere almeno un carattere di questa regione per distinguerlo da ISO 8859-1.

Forse il miglior set di file di test è quello in cui il file di test per ogni codifica contiene tutti i suoi caratteri una volta. Ma forse non sono a conoscenza di qc - a tutti noi piace questa roba di codifica, giusto? :-)

Esiste una tale serie di file di prova per problemi di codifica dei caratteri?


1
+1: Ho appena passato un bel po 'di tempo a implementare un decoder UTF-8. Gestire tutti i casi d'angolo richiede più unit test di quanto potresti pensare.
Raedwald

4
"Testo codificato con diverse codifiche diverse": per una buona copertura si desidera anche eseguire sequenze di byte campione che contengono byte non validi. Secondo la pagina Wikipedia di UTF-8, la cattiva gestione di questi casi ha introdotto vulnerabilità di sicurezza in alcuni prodotti di alto profilo.
Raedwald

@ Raedwald Ovviamente, questo è un buon punto. Non ne ero consapevole. A mio parere solo un motivo in più per una suite di test matura per problemi di codifica. Non deve essere un insieme di file. Può anche essere una libreria che fornisce dati di test che possono essere utilizzati nei test JUnit. Ad esempio, può fornire sequenze di byte critiche / non valide per set di caratteri comuni e stringhe di riferimento per il confronto dopo la decodifica di sequenze di byte di esempio. Solo alcuni pensieri e mi chiedo come questa roba di codifica sia stata testata in tutte le librerie in giro ...
Fabian Barney

Risposte:


26

Che ne dici di provare a utilizzare i file della suite di test ICU ? Non so se sono ciò di cui hai bisogno per il tuo test, ma sembrano avere abbastanza completi da / a file di mappatura UTF almeno: Link al repository per i file di test ICU


+1 il mio preferito finora. Ho letto nella documentazione per 1 ora e sembra fornire tutto ciò di cui ho bisogno, almeno per le cose relative a Unicode.
Fabian Barney,

Penso che questa sia davvero la migliore risposta finora. L'ho accettato e spero che ti guadagnerai una certa reputazione. Se avessi risposto una settimana prima, sono sicuro che avrebbe ottenuto un punteggio molto migliore rispetto ad altre risposte qui. Comunque grazie!
Fabian Barney

41

L'articolo di Wikipedia sui segni diacritici è piuttosto completo, sfortunatamente devi estrarre questi caratteri manualmente. Inoltre potrebbero esistere alcuni mnemonici per ogni lingua. Ad esempio in polacco usiamo:

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

che contiene tutti i 9 segni diacritici polacchi in una frase corretta. Un altro utile suggerimento per la ricerca sono i pangram : frasi che utilizzano ogni lettera dell'alfabeto almeno una volta :

  • in spagnolo, " 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. " (tutte le 27 lettere e segni diacritici).

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

L'elenco dei pangram contiene un riepilogo esaustivo. Chiunque voglia racchiudere questo in un semplice:

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

biblioteca?


1
Di sicuro questa è una risposta +1. Aspetterò un po 'nella speranza che ci sia davvero un set ben pensato di file di test là fuori. Perché ci sono codifiche costruite sopra altre ecc. Penso che sarebbe molto bello avere file di prova per ogni codifica che attivano le differenze. Ma forse mi sbaglio e ci sono buone ragioni per cui non esistono o così.
Fabian Barney


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.