[devel] О кодировке названий файлов при монтировании

Vitaly Lipatov =?iso-8859-1?q?lav_=CE=C1_altlinux=2Eru?=
Пн Фев 21 23:30:51 MSK 2005


On Monday 21 February 2005 20:29, Alexey Morozov wrote:

> Народ, по-моему, вы маетесь ......
Вы это скажите тем, кто пытается iocharset в fstab запихивать.

> Задача в большинстве случаев не определить "кодировку файловой
> системы", так как в тех файловых систем, для которых этот
Речь идёт о кодировке названий файлов в системе
(не в монтируемых системах, а та, которая принята для именования
файлов).
> параметр имеет смысл (в первую очередь - варианты FAT и ISO),
> уже давно используется (двухбайтный) ЮНИКОД. Задача
Это думаю всем понятно.

> СОГЛАСОВАТЬ эту кодировку (ЮНИКОД) с кодировкой
> _пользователя_. А это, извините, совсем другая задача. В общем
Мне кажется, в _системе_ все файлы должны именоваться в одной 
кодировке. Если нужны исключения - объясните и отдельно укажите.
А кодировка пользователя - это что такое? Его локаль?

> случае, не решаемая, так как налицо явная нестыковка
> "системного" и "пользовательского" уровня обработки данных.
> "Системная" кодировка со всей необходимостью одна (постольку
> поскольку у нас разделяемый fstab). А вот "пользовательских"
Вот о ней и речь.

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

> Единственным решением, которое худо-бедно может претендовать
> на некоторую универсальность (ну, помимо банального
> использования содержимого /etc/sysconfig/i18n) является
> организация (через dbus, вестимо, куда ж нынче без него)
> _обратной связи_ между HAL и пользовательским сеансом. То
> есть, сценарий использования примерно таков:
>
> HAL, почуяв устройство с подходящей файловой системой, кидает
> броадкаст сообщение, о том, что-де, обнаружен FAT или там NTFS
> или еще какой ISO9660 позорный, требуется указать, как его
> монтировать. Соответствующий _пользовательский_ процесс,
> запущенный при старте сеанса, сверяется с какой-либо своей
> настройкой (например, получает значение LC_CTYPE, как вариант
> или еще что) и отвечает HAL'у, что-де так и так,
> предпочитаемая локаль пользователя такая-то и такая-то,
> использовать такой-то и такой-то чарсет для конвертации
> данных.
Это всё замечательно. Сначала я хотел бы решить проблемы 90% 
пользователей, которых кормят словами, что кодировка файловой 
системы неопределимое понятие в общем случае, а потому давай-ка 
ты юзер пиши свои charset'ы, заодно и набирать на клавиатуре 
лучше научишься. Простая была проблема, которая десятилетиями не 
решается.

> Да-да, я уже слышу за спиной шаги тех, кто угрожает порвать
> меня с такими решениями на четырехцветный флаг. Поэтому и
Решение хорошее. Как только в системе будет dbus и hal,
обязательно вернёмся.

> предлагается не маяться ...... и попросту забить параметр в
> /etc/sysconfig/i18n, а на основании этого параметра
> формировать настройки HAL'у. Будет работать для 90% случаев,
> по крайней мере.
Этот параметр там уже есть в принципе (LANG), если нужен другой -
давайте обоснуем.
Между прочим, ваше резюме - это то, что я и предлагаю.
Ввести единое место для хранения кодировки файловой системы.
И предлагается это делать с помошью get_filename_encoding
или natspec -f

-- 
Lav
Виталий Липатов
Санкт-Петербург
GNU! ALT Linux Team! LaTeX! LyX!



Подробная информация о списке рассылки Devel