LC_ALL=ru_RU.CP1251 less file
ru_RU.CP1251 locale exists on your system (see if
LC_ALL=ru_RU.CP1251 locale charmap returns CP1252) tells
less that you are in that locale, which means that the
file is encoded in that charset and that the terminal uses that charset.
If the terminal emulator was started in a locale where the charset is UTF-8, it will expect characters coded in UTF-8 so won't know what to do with those CP1251 encoded characters that
less is throwing at it.
You'd need to also start the terminal emulator in that locale, or you could use
luit to do the translation (provided the terminal's charset is UTF-8).
Or you could use
iconv to convert the file into the terminal's locale charset:
iconv -f CP1251 < file | less