Отправляет email-рассылки с помощью сервиса Sendsay

При использовании Downloader for X(5.5.0final) и gftp (2.0.17) не видны русские буквы при просмотре ftp

Когда я использую Downloader for X(5.5.0final) и gftp (2.0.17) для доступа к
ftp - то на ftp-серверах я не
вижу русских букв в названиях файлов. Видны файлы без названий.

Раньше у меня стоял ASP Linux -в нем на тех же ftp-серверах русские
буквы были нормально видны

Посоветуйте пожалуйста - как решить эту проблему?

У меня стоит FedoraCore2, ядро 2.5.
Локаль -
locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=

Ответить   Супотницкий С.М. Sat, 25 Dec 2004 15:09:02 +0300 (#286915)

 

Ответы:

Доброго времени суток.

On Sat, 25 Dec 2004 15:09:02 +0300
Супотницкий С.М. <supotnicki***@y*****.ru> wrote:

Не так давно сия тема поднималась с противоположной стороны... ftp передает названия
файлов без перекодировки, т.е. нормально кириллические названия будут видны только
при совпадении кодировки на сервере и клиенте.

Кроме того, некоторые приложения под gtk2 считают (не всегда, но не знаю, от
чего это зависит), что все названия файлов должны быть в юникоде. Например, у
меня nautilus нормально видит файлы с кириллическими названиями (cp1251), а gqview
- показывает только иконки, а в консоль, из которой запущен вываливает в непристойном
количестве ошибки следующего содержания:
** (gqview:6412): WARNING **: Invalid UTF8 string passed to pango_layout_set_text()

Ответить   Sun, 26 Dec 2004 07:34:36 +0200 (#287037)

 

Уважаемый Rygoravich. Большое спасибо за ответ

только

Да, возможно вы правы, в ASP Linuxe у меня была кодировка cp1251 -
наверно поэтому все и работало.

Я не хочу менять локаль - потому что в нынешней локали тоже вполне
нормально работать. Тем более - недавно я поднимал вопрос о том что в
мозилле ( при доступе к ftp) не видны русские буквы - теперь, с
установкой Fedor-ы (может это тоже зависело от локали), эта проблема решилась.

Неуже нет каких либо способов автоматической перекодировки??. Ведь ни
у одного меня стоит utf8??

Может кто нибуть знает другой просмотрщик ftp который нормально
работает в такой ситуации??

С уважением

Супотницкий mailto:supotnicki***@y*****.ru

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 14614; Возраст листа: 519; Участников: 1287
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/287047



-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.linux.discuss
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: mailto:comp.soft.linux.discuss--unsub@subscribe.ru?subject=comp.soft.linux.discuss

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Супотницкий С.М. Sun, 26 Dec 2004 12:47:58 +0300 (#287047)

 

В сообщении от 1104058078 секунд после начала Эпохи Unix Вы написали:

Попробуйте сменить кодировку только для отдельного процесса

$ LANG=ru_RU.CP1251 gftp

Ответить   Konstantin Korikov Sun, 26 Dec 2004 22:11:51 +0200 (#287264)

 

Уважаемый Константин, большое спасибо, что вы ответили

Я сделал как вы сказали

[sergei@novcompLIN ~]LANG=ru_RU.CP1251 gftp

(process:2909): Gdk-WARNING **: locale not supported by C library

(process:2909): Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.

А когда я зешел на ftp в терминале я увидел множество строчек
типа

** (gftp-gtk:2909): WARNING **: Invalid UTF8 string passed to pango_layout_set_t
ext()

** (gftp-gtk:2909): WARNING **: Invalid UTF8 string passed to pango_layout_set_t
ext()

Аналогично при запуске Downloader for X

[sergei@novcompLIN ~]LANG=ru_RU.CP1251 d4x

(process:2923): Gdk-WARNING **: locale not supported by C library

(process:2923): Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.

К сожелению я не знаю, что это за C library

Ответить   Супотницкий С.М. Mon, 27 Dec 2004 20:40:56 +0300 (#287638)

 

Супотницкий С.М. wrote:

C library - libc/glibc
для добавления нужной locale, под root'ом выполнить
#localedef -f CP1251 -i ru_RU ru_RU.CP1251

Ответить   Vasile Mon, 27 Dec 2004 21:54:41 +0200 (#287711)

 

Vasile,

Monday, December 27, 2004, 10:54:41 PM, you wrote:
Уважаемый Константин и Vasile, большое спасибо, что вы ответили

Т.е. надо поменять локаль. А других вариантов нет????

А как это (смена локали) скажется на моих файлах - ведь я несколько
недель работаю в новой Fedore и у меня уже созданы каталоги (на
русском) ???

Ответить   Супотницкий С.М. Wed, 29 Dec 2004 21:18:03 +0300 (#288675)

 

В сообщении от 1104347883 секунд после начала Эпохи Unix Вы написали:

Нет, эта команда только добавит новую локаль к списку возможных локалей
в системе. Локаль у вас остается прежней, но gftp запускайте с
измененной локалью:

$ LANG=ru_RU.CP1251 gftp

Ответить   Konstantin Korikov Thu, 30 Dec 2004 02:55:19 +0200 (#288786)

 

Уважаемый Константин. Очень большое спасибо!!

Я сделал так и в gftp стали видны русские буквы

Но всплыла другая проблема
Когда каталог или файлы с названием на русском копируется ко мне они имеют примерно
такой вид ____.doc

Вот листинг gftp

PASV
227 Entering Passive Mode (10,0,0,2,226,78).
RETR /.4/shared/books/_uploaded_by_Quad-III/English/Учебники на русском языке/Популярная
грамматика английского языка/Е. Некрасова -- Популярная грамматика английского
языка/pictures/top_w.gif
150 Opening BINARY mode data connection for /.4/shared/books/_uploaded_by_Quad-III/English/Учебники
на русском языке/Популярная грамматика английского языка/Е. Некрасова -- Популярная
грамматика английского языка/pictures/top_w.gif (1076 bytes)
226 Transfer complete.

Вдобавок из самого gftp я без проблем вижу русские названия скачанных файлов
на моем диске

А также я заметил еще одну странную вещь (я не знаю связано ли это с моей проблемой)
gftp почемуто отказывается копировать файлы,названия которых написаны на русском,
на диск fat (где у меня находиться windows) - хотя из linuxa я
свободно копирую туда файлы с названиями на русском

Вот что выводится в логе gftp

PASV
227 Entering Passive Mode (10,0,0,2,227,116).
RETR /.4/shared/books/Кук/01_bc_r.doc
150 Opening BINARY mode data connection for /.4/shared/books/Кук/01_bc_r.doc
(601600 bytes)
РСРёРРР: РРРРBРIРРBРРGРB РBСРСССС РРBРРРСРGСР СРРР /mnt/diskC/Documents and Settings/sergei/Р
РРРBСРёР ССРBР/Кук/01_bc_r.doc: No such file or directory
ABOR
451 Transfer aborted. Broken pipe
РСРёРРР: РРРРBРIРРBРРGРB СРBРIРEРСС РРСРРРBРЁ /mnt/diskC/Documents and Settings/sergei/Р
РРРBСРёР ССРBР/Кук/Kuk: No such file or directory

Ответить   Супотницкий С.М. Thu, 30 Dec 2004 22:01:10 +0300 (#289244)

 

В сообщении от 1104436870 секунд после начала Эпохи Unix Вы написали:

Это не удивительно, другие приложения думают что название файла в
кодировке UTF-8, а gftp записал его в кодировке CP1251. После
копирования файлов и каталогов нужно перекодировать их имена в кодировку
UTF-8.

Так как эта проблема часто возникает у жителей нашей многострадальной
страны (и стан СНГ), я написал скрипт для перекодировки имен файлов
(хотя, лучше бы сделал "нормальный" ftp-клиент ;-) ).

начало recode-rename #!/bin/sh

force=""
recursive=""

while true; do
case "$1" in
-f) force="-f";;
-r) recursive="-r";;
*) break;;
esac
shift
done

fromto="$1"
shift

if [ "$fromto" = "" -o $# = 0 ]; then
echo "Usage: recode-rename [-f] [-r]" \
"FROMCARSET..TOCHARSET dir|file..."
echo "Recode file name(s) from FROMCARSET to TOCHARSET."
echo "Options:"
echo " -f force recoding/renaming"
echo " -r process directories recursively"
exit 1
fi

recode=`which recode 2>/dev/null`
if [ $? != 0 -o ! -x $recode ]; then
echo "Could not find recode command"
exit 1
fi

rename_file() {
oldname="$1"
newdir=`dirname "$1"`
newbase=`basename "$1" |$recode $force "$fromto"`
[ $? = 0 ] || return 1
newname="$newdir/$newbase"
[ "$oldname" != "$newname" ] &&
mv $force "$oldname" "$newname"
}

while [ "$1" != "" ]; do
if [ "$recursive" != "" -a -d "$1" ]; then
find "$1" -depth |
( while read n; do rename_file "$n"; done )
else
rename_file "$1"
fi
shift
done

exit 0
конец recode-rename Запишите этот файл куда нибудь, например в `/usr/local/bin', и дайте
права на выполнение. В вашем случаи есть один неприятный нюанс Вы не
сможете из терминала ввести имя для перекодировки, если оно в CP1251, а
терминал настроен на UTF-8. Я вижу такие решения:

а) прописать вызов скрипта в меню mc или другого файлового менеджера;
б) использовать "Открыть в...", "Отправить в...", и т.п. команды
файлового менеджера;
в) настроить терминал на 8-битовую кодировку, и из него выполнить
команду;
г) разместить файл(ы), которые нужно перекодировать, в каталог с
нормальным ASCII именем (в котором присутствуют только знаки и
буквы латинского алфавита), после чего выполнить:

$ recode-rename -r CP1251..UTF-8 ascii-directory

Это объясняется тем что Windows использует кодировку CP866 для хранения
имен файлов в FAT. Соответственно Linux (при наличии необходимых опций
монтирования) перекодирует имена файлов из кодировки вашей локали в
CP866 при создании/переименовании файлов в разделе с FAT. А так как
имена файлов, которые создает gftp не в UTF-8 (как думает модуль fat), а
в CP1251, то такое перекодирование для имени файла оказывается
фатальным.

Ответить   Konstantin Korikov Fri, 31 Dec 2004 07:30:47 +0200 (#289384)

 

В сообщении от 1104172856 секунд после начала Эпохи Unix Вы написали:

Это glibc. Похоже что у Вас не определена локаль `ru_RU.CP1251', что не
удивительно для Fedora Core. Как уже говорили ранее Sergey B. Khvatov и
Vasile в треде "Установить локаль cp1251", выполните под root'ом:

# localedef -f CP1251 -i ru_RU ru_RU.CP1251

Ответить   Konstantin Korikov Mon, 27 Dec 2004 22:26:39 +0200 (#287752)

 

Sat, 25 Dec 2004 15:09:02 +0300 ко мне пришло письмо, в котором...
Супотницкий С.М. <supotnicki***@y*****.ru> писал(а):

Это откуда у вас такая кашерная версия d4x??? у меня только 2.5.0final
стоит :) Да и вообще лучше пользуйтесь wget или curl.

Ответить   Analyzer Sun, 26 Dec 2004 13:29:15 +1000 (#287069)

 

Analyzer,

Sunday, December 26, 2004, 6:29:15 AM, you wrote:

Вы наверно спутались, у меня стоят Downloader for X(5.5.0final) и
gftp (2.0.17) - а они довольно свежие

Ответить   Супотницкий С.М. Sun, 26 Dec 2004 19:01:27 +0300 (#287639)

 

Sun, 26 Dec 2004 19:01:27 +0300 ко мне пришло письмо, в котором...
Супотницкий С.М. <supotnicki***@y*****.ru> писал(а):

Да нет же у вас скорее всего стоит Downloader for X (2.5.0final)!!!
^^^^^^^^^

Ответить   Analyzer Tue, 28 Dec 2004 06:29:24 +1000 (#287724)

 

Analyzer пишет на днях:

http://www.krasu.ru/soft/chuchelo/
d4x v. 2.5.0 final.

--
saturas, satur***@m*****.ru

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 14668; Возраст листа: 521; Участников: 1290
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/288197



-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.linux.discuss
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: mailto:comp.soft.linux.discuss--unsub@subscribe.ru?subject=comp.soft.linux.discuss

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Wed, 29 Dec 2004 00:46:27 +0500 (#288197)