Свалих конкретния .rar файл и ето резултатите:
1. Кодировката на символите в имената на файловете вътре се оказа Windows-1251 (cp1251). Разбрах го, като копирах името на един от файловете и го пуснах в
Универсалния дешифратор. Когато бъдат прочетени в среда с друга кодировка (а в повечето Linux среди по подразбиране тя е UTF-8) е нормално да излизат с йероглифи;
2. И p7zip, и unrar (не съм пробвал със затворения пакет rar, но той по принцип си има проблеми с нелатинските имена на файлове и папки), успешно разархивират архива в UTF-8 среда, стига да им се каже да не разархивират файловете с целите им пътища (т.е., всички файлове да се разархивират в една папка без заложените подпапки). Но има два проблема с това. Единият е, че файловете, които са с имена на кирилица, се разархивират с йероглифски имена. Другият е, че в архива има файлове с едни и същи имена в различни подпапки, и при разархивиране на всичко в една папка се налага да се преименуват (в процеса по разархивиране се стига до въпроси за замяна или преименуване на вече съществуващи файлове), а и се губи връзката кой от тях за къде се е отнасял. Но този опит за разархивиране показва, че проблемът, чупещ нормалния процес по разархивиране, са само имената на папките и тяхното създаване, а имената на файловете не са проблем (въпреки че, когато в последствие човек реши да ползва тези файлове, ще си има допълнителна занимавка с тях, заради йероглифските им имена; convmv може да помогне за последващото декодиране на имената);
3. РЕШЕНИЕТО. Трябва да се превключи кодировката в конзолата (по-точно, променливата на средата LANG) на съответстваща на кодировката на дадения архив, след което няма проблеми с разархивирането с цели пътища на файловете както с unrar, така и с p7zip, като дори след това файловете и папките се създават с четима кирилица. Казано с команди за случая:
export LANG=bg_BG.cp1251 или export LANG=ru_RU.cp1251
unrar x archive.rar или 7z x archive.rar
Текущо наличните кодировки в системата (за да се види налични ли са двете, споменати по-горе) могат да се видят с команда
locale -a
като, ако и двете липсват в списъка, човек трябва да си добави някоя от тях, преди да я задава в LANG променливата. В Debian и базираните на него дистрибуции това става с команда с root права
dpkg-reconfigure locales
В RedHat-базираните дистрибуции е най-удобно със system-config-language, като преди това се инсталира този пакет, ако не е инсталиран. За други дистрибуции желаещите да си проверят официалния за тях начин в документацията.
Ако човек има намерението след разархивирането на пакета по гореописания начин да продължи да работи в същата конзола е хубаво да си върне стойността на LANG променливата към нейната подразбираща се стойност. За целта може предварително да си погледне каква е стойността ѝ с команда
env | grep LANG