Não é "ASCII" nem "ASCII russo".
Antes do Unicode ser difundido, a maioria dos sistemas de computadores usava as codificações de caracteres ISO-8859, das quais havia 16, cada uma para uma região diferente (Central da Europa, Cirílico, Grego ...). O Windows tinha suas próprias 'páginas de códigos', muito semelhantes, mas com glifos extras em intervalos não utilizados. Todas essas codificações de caracteres são de 8 bits e diferem apenas na segunda metade (128-255).
O problema com essas codificações é que é quase impossível para um programa determinar qual codificação foi usada para salvar um arquivo, a menos que ele tenha sido especificado explicitamente (como em páginas HTML; os arquivos de texto não possuem essas tags de metadados). Leia o artigo da Wikipedia sobre Mojibake para uma descrição mais detalhada.
No seu exemplo, o documento foi salvo usando Windows-1251 (Cirílico), mas seu programa o lê como se fosse Windows-1252 (Europa Ocidental), que tem personagens muito diferentes nas mesmas posições. Para o computador, parece perfeitamente bem - ele não entende idiomas ou scripts. (Existem programas que fazem análise estatística para determinar a codificação correta - alguns navegadores têm essa função.)
Existem várias maneiras de converter esse texto em Unicode:
-
Use ferramentas on-line, como este ou esta um .
-
Use seu navegador da Web:
-
Arraste o arquivo
.txt
para o navegador. -
Em Ver → Codificação de caracteres (ou Firefox → Web Developer → Codificação de caracteres ou Chave inglesa → Ferramentas → Codificação ), escolha a codificação original correta: "Cirílico (Windows-1251)" no seu caso.
-
-
Use o editor de texto Notepad2 :
-
Abra o arquivo.
-
Em Arquivo → Codificação → Recodificar ... , escolha a codificação original correta.
-
-
Use o GNU
iconv
, com binários do Windows a partir do GnuWin32 ou Gettext para o Win32 .iconv -f cp1251 -t utf-8 < myfile.txt > myfile.fixed.txt
O Windows Notepad lê corretamente o texto codificado em UTF-8 e UTF-16.