Como lidar com acentos no Common Lisp (SBCL)?
Provavelmente é muito básico, mas eu não sabia mais o que perguntar. Estou tentando processar algumas informações de texto em um SLIME REPL a partir de um arquivo escrito em português, portanto, usa muitos caracteres de acento - como é, á, ô, etc.
Quando manuseio textos em inglês, uso a seguinte função:
(defun txt2list (name)
(with-open-file (in name)
(let ((res))
(do ((line (read-line in nil nil)
(read-line in nil nil)))
((null line)
(reverse res))
(push line res))
res)))
que não consegue ler caracteres acentuados, fornecendo o erro "a sequência de octetos # (195) não pode ser decodificada.".
Então, minha pergunta é: existe uma maneira de manipular esses caracteres automaticamente? Não há problema em substituir esses caracteres pela letra sem o acento ('á' se transforma em 'a') ou simplesmente excluir esses caracteres ('cômodo' se transforma em 'cmodo'), seja ele feito no próprio arquivo antes de ler ou durante o processo de leitura.