Existe um conjunto de arquivos “Lorem ipsums” para testar problemas de codificação de caracteres?

85

Para o layout, temos nosso famoso texto "Lorem ipsum" para testar sua aparência.

O que estou procurando é um conjunto de arquivos contendo Texto codificado com várias codificações diferentes que posso usar em meus testes JUnit para testar alguns métodos que lidam com a codificação de caracteres ao ler arquivos de texto.

Exemplo:

Ter um ISO 8859-1arquivo de Windows-1252teste codificado e um arquivo de teste codificado. O Windows-1252 deve acionar as diferenças na região 80 16 - 9F 16 . Em outras palavras, deve conter pelo menos um caractere desta região para distingui-lo do ISO 8859-1.

Talvez o melhor conjunto de arquivos de teste seja aquele em que o arquivo de teste para cada codificação contém todos os seus caracteres uma vez. Mas talvez eu não esteja ciente de sth - todos nós gostamos dessa coisa de codificação, certo? :-)

Existe esse conjunto de arquivos de teste para problemas de codificação de caracteres por aí?

Fabian Barney
fonte
1
+1: Acabei de passar um bom tempo implementando um decodificador UTF-8. Lidar com todos os casos extremos requer mais testes de unidade do que você imagina.
Raedwald
4
"Texto codificado com várias codificações diferentes": para uma boa cobertura, você também deseja sequências de bytes de amostra que contenham bytes inválidos. De acordo com a página UTF-8 da Wikipedia, o tratamento incorreto desses casos introduziu vulnerabilidades de segurança em alguns produtos de alto perfil.
Raedwald
@Raedwald Claro, esse é um bom ponto. Eu não estava ciente disso. Na minha opinião, apenas mais uma razão para um conjunto de testes maduro para problemas de codificação. Não precisa ser um conjunto de arquivos. Também pode ser uma biblioteca que fornece dados de teste que podem ser usados ​​em testes JUnit. Por exemplo, pode fornecer sequências de bytes críticas / inválidas para conjuntos de caracteres comuns e Strings de referência para comparação após a decodificação de sequências de bytes de amostra. Apenas alguns pensamentos e eu me pergunto como essa coisa de codificação foi testada em todas as bibliotecas ao redor ...
Fabian Barney

Respostas:

26

Que tal tentar usar os arquivos do conjunto de testes ICU ? Não sei se eles são o que você precisa para o seu teste, mas eles parecem ter pelo menos arquivos de mapeamento UTF bastante completos de / para: Link para o repositório para arquivos de teste ICU

Daniel Teply
fonte
+1 meu favorito até agora. Eu li a documentação por 1 hora e parece fornecer tudo que eu preciso - pelo menos para coisas relacionadas ao Unicode.
Fabian Barney de
Acho que essa é realmente a melhor resposta até agora. Eu aceitei e espero que você consiga alguma reputação por isso. Se respondesse uma semana antes, tenho certeza que teria uma pontuação muito melhor em comparação com outras respostas aqui. De qualquer forma, obrigado!
Fabian Barney
42

O artigo da Wikipedia sobre diacríticos é bastante abrangente, infelizmente você tem que extrair esses caracteres manualmente. Também pode haver alguns mnemônicos para cada idioma. Por exemplo, em polonês, usamos:

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

que contém todos os 9 diacríticos poloneses em uma frase correta. Outra dica de pesquisa útil são os pangramas : sentenças usando todas as letras do alfabeto pelo menos uma vez :

  • em espanhol, " 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. " (todas as 27 letras e sinais diacríticos).

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

A lista de pangramas contém um resumo completo . Alguém se preocupa em embrulhar isso em um simples:

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

biblioteca?

Tomasz Nurkiewicz
fonte
1
Com certeza esta é uma resposta +1. Vou esperar um pouco na esperança de que realmente haja um conjunto bem elaborado de arquivos de teste por aí. Porque existem codificações construídas em cima de outras, etc. Acho que seria muito bom ter arquivos de teste para cada codificação acionando as diferenças. Mas talvez eu esteja errado e haja boas razões para eles não existirem ou então.
Fabian Barney
8

Não conheço nenhum documento de texto completo, mas se você puder começar com uma visão geral simples de todos os conjuntos de caracteres, existem alguns arquivos disponíveis no servidor ftp.unicode.org

Aqui está o WINDOWS-1252, por exemplo. A primeira coluna é o valor do caractere hexadecimal e a segunda é o valor Unicode.

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

Otimista
fonte
+1 Obrigado pelo seu esforço. Recurso de arquivos muito interessante.
Fabian Barney
1

Bem, eu usei uma ferramenta online para criar meus conjuntos de caracteres de texto de Lorem Ipsum. Eu acredito que pode te ajudar. Eu não tenho um que tenha todos os conjuntos de caracteres diferentes em uma única página.

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

Sandeep Nair
fonte
4
Lorem ipsum consiste apenas em caracteres latinos, pois é em latim. Não é isso que está sendo perguntado aqui. BTW: repo1.maven.org/maven2/org/codeswarm/lipsum/1.0
Tomasz Nurkiewicz