O requisito que você escreveu não possui as características de um bom requisito . Especificamente, não é coeso, não é atômico e não é ambíguo. Devido à falta dessas características, também não é facilmente verificável.
Seu requisito inicial de estado é:
O nome do arquivo baixado pode conter caracteres não ASCII e o processamento disso não deve travar o aplicativo
Eu recomendaria remover o "... e o processamento disso não deve travar o aplicativo". Se você tem a exigência de que um software precise fazer alguma coisa, acho que não há problema em assumir que ele deve ser feito sem travar o software.
Isso transforma o requisito em:
O nome do arquivo baixado pode conter caracteres não ASCII
Agora, você tem um requisito coeso e atômico. No entanto, não tenho certeza de que seja inequívoco. Na sua pergunta, você menciona vários formatos diferentes. Existem algumas opções.
Alguns recomendariam um requisito separado e exclusivo para cada codificação de nome de arquivo que deve ser suportada. Isso melhor suportaria requisitos coesos, atômicos, rastreáveis, inequívocos e verificáveis. Também facilitaria a especificação da importância de cada requisito - talvez o suporte para algumas codificações seja mais importante ou necessário mais cedo.
Outros podem recomendar uma tabela de formatos suportados e esse requisito vincularia a uma tabela. Seria menos completo (você tem uma sentença textual e uma tabela a ser mantida), mas elas estariam no mesmo documento ou banco de dados. No entanto, se você executasse o vínculo em uma ferramenta de gerenciamento de requisitos, eles poderiam ser vinculados para que as alterações em um destacassem o requisito vinculado. Também permitiria que o texto fluísse para outros pacotes de software como está, mas com uma tabela diferente para codificações diferentes.
Porém, como você documenta os requisitos depende de suas necessidades específicas.