предыстория: стал подыхать веник, на нем много информации, впридачу имена файлов на русском почти везде - файловая свалка юзеров. Под виндами раздел NTFS оказался недоступен - попытки чтения ведут к зависанию компа. Под линуксом читается на ура. Причем под Мандривой 2008 spring сначала попоробовал - полное Г - кодировку не могло уловить ни при каких комбинациях. Плюнул, постави веник на OpenSUSE 10.3 - все зараболтало с полпинка. Немцы работают как надо. Далее. Системная локаль cp1251 - так надо потому что в сетке половина компов на линуксе - половина на винде и идет постоянный файлообмен ка кпо шарам так и по фтп - нормально получается работать только на этой кодировке, да еще учитывая спецыфику программного обеспечения под винд.. в общем - только cp1251. варианты не предлагать.
Задача стала передо мной такая: перенести данные на другой веник. Но не просто перенести, а с заделом на будущее - переставив на этом компе винду на линукс (жду опенсусеку 11) хочу увидеть все свои данные в полной сохранности и с читабильными именами файлов. как я уже сказал - локаль 1251.
Что сделал: 0) поставил дрова Ext2IFS самые свежие. кодировку UFT отключил тем самым дав системе писать имена фавйлов в той кодировкой которая используется системой - то есть по идее 1251 в винде у меня.
1) Физически подсоединил оба веника к линуховой тачке с опенсусекой. На свежем - создал раздел ext3 чистый. Подсоединил NTFS раздел со старого винта через mount -t ntfs-3g -o force,codepage=cp1251 (\from) (\to) и скопировал инфу как есть с винта на винт. Глазами вижу что при виндовой локали в системе имена файлов и на ntfs разделе читабильны, и на новоскопированном. Отрубаю винт, ставлю на винду. Монтирую, даю буковку диску. Захожу - трындец! вид у русских букв крокозябильный. Выглядит так, как выглядит 866 текс когда его смотришь в кодировке 1251 или наоборот. В общем кодировки не совпали.. облом-с! ладно... 2) оставлю винт на виндовом компе. Чищу файлы. На линуксовом монтирую через /sbin/mount.cifs -o codepage=cp1251,username=(..),passwd=(..) \\comp\resurs /mnt/networkdrive копирую файлы по сети. На виндовой такчке файлы выглядят читабильно, имена нормальные русские. Отсоединяю веник от виндовой тачки и цепляю на линукс где локаль 1251. Подмонтирую раздел - все в порядке, ошибок не пишет.. но! мляць.. буковки крокозябельные! однозначно не UTF8 - он двухбайтовый, спутать нельзя, все как и в предыдущем опыте - точно как перепутанные 866 и 1251 :(
ВОПРОС: что же все-таки делать чтобы один и тот же веник виделся и там и там так как нужно? Пробовал указывать mount кодовую страницу, нлс и прочее - говорит что такое делать для Ext2/3 нельзя - я в печали. Как побороть? можно ли в Линуксе разные разделы хранить под разными кодировками? Может получится именно этот раздел вести в кодировке UTF8? - новый драйвер под эти разделы в линуксе позволяет правильно работать с UTF8. Только напомню - системную локаль в линуксе менять нельзя - проги перестают работать с сетевой базой данных!
Жду ответа очень-очень! Спасибо!