Para fazer com que less
seja executado em uma codificação diferente da do terminal, use luit (que acompanha o utilitário X11 suite).
LANG=ru_RU.CP1251 luit less subs.srt
Se você quiser detectar a codificação automaticamente, isso é mais complicado, porque um arquivo de texto não tem indicação de sua codificação. O software Enca tenta reconhecer a codificação de um arquivo com base em sua linguagem:
$ enca -L russian subs.srt
MS-Windows code page 1251
$ iconv -f "$(enca -iL russian subs.srt)" | less
Você pode tornar essa combinação um filtro LESSOPEN
(consulte Como posso ver arquivos gzipados em menos sem ter que digitar zless? por exemplo. Isso pode não dar bons resultados para textos que não estão em russo, no entanto.
Se você usa somente UTF-8 e CP1251, pode voltar para o CP1251 quando um arquivo isn ' t válido UTF-8 - existem “buracos” em UTF-8 que fazem com que a maioria dos arquivos em uma codificação de 8 bits não seja válida em UTF-8. Script de filtro de prova de conceito para LESSOPEN
(pode não funcionar em outros sistemas além do Linux, porque depende de head -c N
que lê exatamente N bytes):
#!/bin/sh
head=$(head -c 1000)
if printf '%s\n' "$head" | grep -qav '^.*$'; then
{ printf '%s\n' "$head"; cat; } | iconv -f CP1251
else
{ printf '%s\n' "$head"; cat; }
fi