¿Existe un conjunto de archivos “Lorem ipsums” para probar problemas de codificación de caracteres?

85

Para el diseño tenemos nuestro famoso texto "Lorem ipsum" para probar cómo se ve.

Lo que estoy buscando es un conjunto de archivos que contengan texto codificado con varias codificaciones diferentes que pueda usar en mis pruebas JUnit para probar algunos métodos que se ocupan de la codificación de caracteres al leer archivos de texto.

Ejemplo:

Tener un ISO 8859-1archivo de Windows-1252prueba codificado y un archivo de prueba codificado. El Windows-1252 tiene que activar las diferencias en la región 80 16 - 9F 16 . En otras palabras, debe contener al menos un carácter de esta región para distinguirlo de ISO 8859-1.

Quizás el mejor conjunto de archivos de prueba es aquel en el que el archivo de prueba para cada codificación contiene todos sus caracteres una vez. Pero tal vez no estoy al tanto de algo, a todos nos gusta esta codificación, ¿verdad? :-)

¿Existe tal conjunto de archivos de prueba para problemas de codificación de caracteres?

Fabián Barney
fuente
1
+1: Acabo de pasar bastante tiempo implementando un decodificador UTF-8. Manejar todos los casos de esquina requiere más pruebas unitarias de las que cree.
Raedwald
4
"Texto codificado con varias codificaciones diferentes": para una buena cobertura, también desea secuencias de bytes de muestra que contengan bytes no válidos. Según la página de Wikipedia de UTF-8, el mal manejo de esos casos ha introducido vulnerabilidades de seguridad en algunos productos de alto perfil.
Raedwald
@Raedwald Por supuesto, ese es un buen punto. Yo no estaba consciente de esto. En mi opinión, solo una razón más para un conjunto de pruebas maduro para problemas de codificación. No es necesario que sea un conjunto de archivos. También puede ser una biblioteca que proporciona datos de prueba que se pueden usar en pruebas JUnit. Por ejemplo, puede proporcionar secuencias de bytes críticas / no válidas para conjuntos de caracteres comunes y cadenas de referencia para comparar después de decodificar secuencias de bytes de muestra. Solo algunos pensamientos y me pregunto cómo se probó este material de codificación en todas las bibliotecas ...
Fabian Barney

Respuestas:

26

¿Qué hay de intentar utilizar los archivos de la suite de pruebas ICU ? No sé si son lo que necesita para su prueba, pero parecen tener archivos de mapeo desde / hacia UTF bastante completos al menos: Enlace al repositorio para archivos de prueba de ICU

Daniel Teply
fuente
+1 a mi favorito hasta ahora. Leí la documentación durante 1 hora y parece que me proporciona todo lo que necesito, al menos para cosas relacionadas con Unicode.
Fabian Barney
Creo que esta es realmente la mejor respuesta hasta ahora. Lo acepté y espero que consigas cierta reputación por ello. Si hubiera respondido una semana antes, estoy seguro de que habría obtenido una puntuación mucho mejor en comparación con otras respuestas aquí. ¡Gracias de todos modos!
Fabian Barney
41

El artículo de Wikipedia sobre signos diacríticos es bastante completo, desafortunadamente debes extraer estos caracteres manualmente. También puede haber algunos mnemónicos para cada idioma. Por ejemplo, en polaco usamos:

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

que contiene los 9 diacríticos polacos en una oración correcta. Otro consejo de búsqueda útil son los pangramas : frases que utilizan todas las letras del alfabeto al menos una vez :

  • en español, " 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 " (las 27 letras y diacríticos).

  • en ruso, " Съешь же ещё этих мягких французских булок, да выпей чаю " (las 33 letras del alfabeto cirílico ruso).

La lista de pangramas contiene un resumen exhaustivo. Cualquiera se preocupa por envolver esto en un simple:

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

¿biblioteca?

Tomasz Nurkiewicz
fuente
1
Seguro que esta es una respuesta +1. Esperaré un poco con la esperanza de que realmente exista un conjunto bien pensado de archivos de prueba. Porque hay codificaciones construidas sobre otras, etc. Creo que sería muy bueno tener archivos de prueba para cada codificación que active las diferencias. Pero quizás me equivoque y hay buenas razones por las que no existen o algo así.
Fabian Barney
8

No conozco ningún documento de texto completo, pero si puede comenzar con una descripción general simple de todos los conjuntos de caracteres, hay algunos archivos disponibles en el servidor ftp.unicode.org

Aquí está WINDOWS-1252, por ejemplo. La primera columna es el valor de carácter hexadecimal y la segunda el valor Unicode.

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

Optimista
fuente
+1 Gracias por tu esfuerzo. Recurso de archivos muy interesante.
Fabian Barney
1

Bueno, había usado una herramienta en línea para crear mis conjuntos de caracteres de texto de Lorem Ipsum. Creo que te puede ayudar. No tengo uno que tenga todos los juegos de caracteres diferentes en una sola página.

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

Sandeep Nair
fuente
4
Lorem ipsum consta únicamente de caracteres latinos, como lo es en latín. Esto no es lo que se pregunta aquí. Por cierto: repo1.maven.org/maven2/org/codeswarm/lipsum/1.0
Tomasz Nurkiewicz