LINUX.ORG.RU

ProFTPd - устранение проблем с русскими названиями файлов


0

0

В статье рассмотрены проблемы возникающие при закачивании на сервер файлов с русскими названиями в кодировке CP1251 и приведено пошаговое их решение. Патч прикрепленный к статье рассчитан на самую последнюю версию ProFTPd - 1.3.0.

>>> Подробности

Я тоже Pure-ftp юзаю. Заманал это proftpd. С буквой 'я' у меня проблем не было - а вот с '#' возникли и неизвестно что еще он не возьмет. Надо было назвать его LiteFTPD. Лажа одним словом и тормоз еще к тому же.

Speedway
()
Ответ на: комментарий от Speedway

А зачем вообще нужен русский на фтп? Что транслита нехватает?

gloomdemon
()
Ответ на: комментарий от Speedway

Не наблюдаю никаких проблем ни с буквами "Я" ни с "#".

Видимо Я чегото делаю не так.

kilolife ★★★★★
()
Ответ на: комментарий от anonymous

> В статье не отражен злостный хак для решения проблемы буквы 'я'

Да ну?

"В названиях закачиваемых из Windows файлов не должны пропадать буквы "ыьэюя""

atrus ★★★★★
()
Ответ на: комментарий от catap

> utf8 позваляет иметь обратную совместимость, для всего остального есть utf-16 и utf-32

вы все еще пользуетесь этим отстоем, когда есть utf-64?

anonymous
()
Ответ на: комментарий от anonymous

> вы все еще пользуетесь этим отстоем, когда есть utf-64?

Лучше использовать utf-1024 - вот это для крутых парней.

Sorcerer ★★★★★
()

зачем нужен utf8, когда все нужные символы влезают в однобайтовую кодировку? мы ж не китайцы...

wwww
()

ДаёшЪ кириллицу!!!

хттп://ввв.гуугл.ру

А то мелочитесь с FTP ;-) RFC фтопкунах!!!

PoorGen
()
Ответ на: комментарий от catap

>utf8 позваляет иметь обратную совместимость, для всего остального есть utf-16 и utf-32.

С чем? С подмножеством, немногим большим чем a-zA-Z0-9 ? Нафиг такую совместимость, не нужна она никому, кроме амеров. Она даже в Европе (кроме Англии;) уже бесполезна, совместимость эта.

А доступ к произвольному элементу строки таки-да нужен, например, для *быстрого* поиска и замены подстроки символов (хинт: есть не только алгоритмы а-ля strstr).

stellar
()
Ответ на: комментарий от wwww

>зачем нужен utf8, когда все нужные символы влезают в однобайтовую кодировку? мы ж не китайцы...

Зачем нужен именно *utf-8* - хз. А вот то, что символы влезают в однобайтовую кодировку - это неправда. Однобайтовой кодировки, например, уже не хватит для репрезентации математического текста или статьи в словаре...

Короче, 256 символов вполне себе может не хватить, но пользоваться utf8 в ряде случаев *очень* неудобно и непонятно, почему много аффторов считают ее панацеей.

stellar
()
Ответ на: комментарий от stellar

> С чем? С подмножеством, немногим большим чем a-zA-Z0-9 ? Нафиг такую совместимость, не нужна она никому, кроме амеров. Она даже в Европе (кроме Англии;) уже бесполезна, совместимость эта.

/etc перепишешь?

yyk ★★★★★
()
Ответ на: комментарий от stellar

> Короче, 256 символов вполне себе может не хватить, но пользоваться utf8 в ряде случаев *очень* неудобно и непонятно, почему много аффторов считают ее панацеей.

Угу. Их действительно не хватает.

Если ты не делаешь указания на кодировку в файле (а как ты это сделаешь во всех файлах в /etc и других важных местах?), то вместе с перепиской всех утилит на работу с кодировкой, установленной в системе, тебе ещё надо переписать всё в /etc и прочих... В общем, в любом случае всё переписывать... :)

Вот именно с этим utf-8 и сохраняет совместимость. Мало?

И не надо обрабатывать текст в utf-8, а только читать и писать :)

yyk ★★★★★
()
Ответ на: комментарий от yyk

>Если ты не делаешь указания на кодировку в файле (а как ты это сделаешь во всех файлах в
>/etc и других важных местах?), то вместе с перепиской всех утилит на работу с кодировкой,
>установленной в системе, тебе ещё надо переписать всё в /etc и прочих...
>В общем, в любом случае всё переписывать... :) 

Не надо хотеть /etc на языках, отличных от английского.
Иначе скоро все будет выглядеть вот так:

<?xml version="1.0" encoding="utf-8"?>
<конфигурация>
	<сеть>
		<интерфейс имя="eth0">
			<адрес адр="10.0.0.1" маска="255.0.0.0"/>
			<адрес адр="10.0.0.2" маска="255.0.0.0"/>
			<адрес адр="10.0.0.3" маска="255.0.0.0"/>
		</интерфейс>
	</сеть>
</конфигурация>

Утрирую, конечно. Но пользоваться не ascii-7 для конфигурации *системы* - безумие.

stellar
()
Ответ на: комментарий от stellar

> Не надо хотеть /etc на языках, отличных от английского.

Не надо устанавливать ограничения там, где они совершенно необоснованы. :)

А чем ~/.bash_history отличается от файлов в /etc ? А ~/.bash_profile и ~/.bashrc ?

Млин, что про "нативных" англоговорящих говорить, если со "своими" приходится спорить по поводу того, что почти любая информация может быть non-ascii. Сколько "бились" за каталоги в национальной кодировке?

По-поводу примера: xml в отличие от utf-8 считаю необязательным :)

yyk ★★★★★
()
Ответ на: комментарий от stellar

> А доступ к произвольному элементу строки таки-да нужен, например, для *быстрого* поиска и замены подстроки символов (хинт: есть не только алгоритмы а-ля strstr).

Сначала нужно преобразовать UTF-8 в Unicode, а затем уж работать со строкой.

Sorcerer ★★★★★
()
Ответ на: комментарий от yyk

>Не надо устанавливать ограничения там, где они совершенно необоснованы. :)

Вполне себе обоснованные ограничения. Никому же в голову не приходит переписать стандарт файловой системы (man hier) на использование национальных символов.

Ни у кого не возникает вопросов, почему в системе нет каталогов /корень, /дом, /врем, /код и т.д...

>А чем ~/.bash_history отличается от файлов в /etc ?

Тем, что ~/.bash_history - файл *протокола* команд. Фактически - некий лог, который можно хранить как угодно, хоть в UTF-143. Интерпретация его содержимого целиком зависит от bash.

>А ~/.bash_profile и ~/.bashrc ? Тоже самое, что и ~/.bash_history

>Млин, что про "нативных" англоговорящих говорить, если со "своими" >приходится спорить по поводу того, что почти любая информация может >быть non-ascii. Сколько "бились" за каталоги в национальной >кодировке?

Пользовательские наталоги в национальной кодировке - это одно. *Системные* каталоги и файлы конфигурации - совершенно другое.

>По-поводу примера: xml в отличие от utf-8 считаю необязательным :)

Я могу привести пример файла конфигурации без XML. Просто пример с XML более нагляден и ярче показывает абсурдность желания пользоваться национальной кодировкой в конфигурационных файлах

stellar
()

> зачем нужен utf8, когда все нужные символы влезают в однобайтовую кодировку? мы ж не китайцы...

Опять "мы". Про китайцев тоже надо подумать. Или про европейцев. Вот вам надо будет в одном документе вставить "ё" и "&#246;", и что будете делать? А в Википедии запросто. Потому что там UTF-8.

Уверяю, сделать нормальную поддержку UTF-8 куда проще, чем поддерживать весь зоопарк однобайтных кодировок.

Sikon ★★★
()
Ответ на: комментарий от stellar

> Ни у кого не возникает вопросов, почему в системе нет каталогов /корень, /дом, /врем, /код и т.д...

Но и надеюсь ни у кого не возникает вопросов, почему могут быть каталоги ~/корень, ~/дом, ~/врем, ~/код (понятно, что для других целей)?

> Пользовательские наталоги в национальной кодировке - это одно. *Системные* каталоги и файлы конфигурации - совершенно другое.

Так как обрабатывать одни и другие с минимальным различием? Правильно, если и то и другое - в utf-8 :)

> Я могу привести пример файла конфигурации без XML. Просто пример с XML более нагляден и ярче показывает абсурдность желания пользоваться национальной кодировкой в конфигурационных файлах

В свете POSIX определённые ключевые слова - да, не могут. Но говорить о ВСЕХ данных я бы поостерёгся.

И потом, с utf-8 для "нелюбителей" нац. кодировок ничего не меняется - используйте и дальше только ascii - 100% совместивость, правда - односторонняя :)

yyk ★★★★★
()

> Сначала нужно преобразовать UTF-8 в Unicode, а затем уж работать со строкой.

UTF-8 - это Unicode. Видимо, автор подразумевал преобразование в UTF-16 или UTF-32.

Sikon ★★★
()
Ответ на: комментарий от Sikon

> UTF-8 - это Unicode. Видимо, автор подразумевал преобразование в UTF-16 или UTF-32.

UTF-8 - это кодировка, поддерживающая все unicode символы. Равно как и UTF-16 и UTF-32 и UCS-2 (не все) и UCS-4, которую автор скорее всего и имел в виду :)

yyk ★★★★★
()
Ответ на: комментарий от Demetrio

Tue Sep 12 00:11:23 2006 [pid 25871] [ftp] OK MKDIR: Client "192.168.0.x", "/incoming/Новая папка (2)"

ПРЕВЕД! )))

SteepZ
()
Ответ на: комментарий от Sorcerer

> > Видимо, автор подразумевал преобразование в UTF-32

> Да, именно это я и подразумевал. :)

Не самая удобная кодировка. Большинство (из мне известных) всё-же работают с (в) UCS-4.

yyk ★★★★★
()
Ответ на: комментарий от SteepZ

Спасибо, гугль тот-же сайт выдал :) А почему не предложить этот патчик разработчикам vsftpd? Почему они упираются?

los_nikos ★★★★★
()

> Не самая удобная кодировка. Большинство (из мне известных) всё-же работают с (в) UCS-4.

Разве UTF-32 и UCS-4 - не одно и то же? (Я знаю, что UCS-2 - это подмножество UTF-16, но ведь 32 бит достаточно для всех Unicode-символов.)

Sikon ★★★
()
Ответ на: комментарий от Sikon

> Разве UTF-32 и UCS-4 - не одно и то же? (Я знаю, что UCS-2 - это подмножество UTF-16, но ведь 32 бит достаточно для всех Unicode-символов.)

Ох, если односложно без эмоций и ругательств, то "нет" :)

http://www.unicode.org/faq/utf_bom.html до полного простветления :)

yyk ★★★★★
()
Ответ на: комментарий от Sorcerer

Скорее да, чем нет. Но если говорить всё до конца, то скорее UCS-4LE = UTF-32LE и UCS-4BE = UTF-32BE, но UCS-4 != UTF-32 ;) (кстати - там-же, только из таблицы, а не из текста).

Ну и iconv этому следует.

yyk ★★★★★
()

Все такие умные, просто сипец.

Есть windows user. У него десять фильмов. Он хочет их слить мне на ftp. Фильмы названы, естественно, по-русски (бля, а вы на CD тоже транслитом все через задницу пишете?). С чего бы это я должен его посылать нах перекодировать в ASCII?

Его убогий IE не сообразить кодировку сменить на нужную и польется все это в меня в cp1251. Ну ладно, зайдя на ftp я кодировку переключу, а зайдя консолью что делать? А что делать ему, если я своих коевых кодировок ему засобачу? Вешаться?

Есть нормальное решение. Подходит для всех пользователей. Ну да, хак. И чего? Шашечки или ехать?

Сначала ехать, а в процессе езды разовьем шашечки.

jackill ★★★★★
()
Ответ на: комментарий от jackill

Вот папки созданные через IE.

ls -l /home/ftp/incoming/
drwxr-xr-x 2 ftp nogroup 4096 2006-09-10 22:12 Новая папка
drwxr-xr-x 2 ftp nogroup 4096 2006-09-13 01:17 Новая папка (2)
drwxr-xr-x 2 ftp nogroup 4096 2006-09-13 12:11 Новая папка (3)

locale
LANG=ru_RU.KOI8-R
LC_CTYPE="ru_RU.KOI8-R"
LC_NUMERIC="ru_RU.KOI8-R"
LC_TIME="ru_RU.KOI8-R"
LC_COLLATE="ru_RU.KOI8-R"
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES="ru_RU.KOI8-R"
LC_PAPER="ru_RU.KOI8-R"
LC_NAME="ru_RU.KOI8-R"
LC_ADDRESS="ru_RU.KOI8-R"
LC_TELEPHONE="ru_RU.KOI8-R"
LC_MEASUREMENT="ru_RU.KOI8-R"
LC_IDENTIFI

SteepZ
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.