[solved] кириллица в iso9660

проблема очень простая - нет кириллицы в именах файлов смонтированного DVD диска (iso9660)
пробовал mount -o <utf8|iocharset=[cp866|cp1251]>
под win кириллица есть.
DVD udf кириллицу показывает, в ядре кириллицы есть. что сделано неправильно?

---

диагностика проблемы:
если на диске iso9660 присутствует RockRidge и его кодировка не совпадает с системной локалью - правильных имен файлов получить не удастся. при наличии и RR и joliet по умолчанию используется RR. Инфы о кодировке в RR нет, указать кодировку при монтировании невозможно (проблема RR)

решение проблемы:
если на диске присутствует joliet (он всегда Unicode), то, если нет необходимости в POSIX расширениях ФС и нужна кириллица (т.е. "нелатиница" в общем случае), нужно монтировать с параметром -o norock, дабы отключить RR. В случае если локаль не UTF8, не забудьте указать -o iocharset=ваша_локаль

джойлет есть в ядре ? маунт с

джойлет есть в ядре ? маунт с ним идет ?, какая версия iso ? как создавл исошку ?

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

joliet в ядре есть > маунт с

joliet в ядре есть
> маунт с ним идет ? как проверить, используются ли при mount iso9660 расширения joliet - не в курсе, проясните плз. Диск монтируется, файлы видны), кириллицы в именах нет.
> какая версия iso ? как создавл исошку ? это не исоха, это болванка

.

Beelzebubbie написал(а):
joliet в ядре есть

Зачем???
Никогда! Слышишь!! Никогда!!! не используй эту бяку.

Только RockRidge (виндузятникам на радость)!
И побольше кириллицы в именах файлов!

:wq
--
Live free or die

[b]> Только RockRidge

[b]> Только RockRidge (виндузятникам на радость)![/b
если бы я 1) только линухом пользовался и 2) не пользовался чужими дисками, то я бы и не заморачивался ))

а коль скоро не так, то механизм "интеллектуального кириллического" монтирования актуален

Зачем??? Никогда! Слышишь!!

Зачем???
 Никогда! Слышишь!! Никогда!!! не используй эту бяку.
Только RockRidge (виндузятникам на радость)!
 И побольше кириллицы в именах файлов!

1) не флеймь.Иначе каждый день буду присылать на емаил статьи с MSDN и по параграфу из "Ресурсы Виндовс" ( там параграфов больше , чем твоего терпения ) :)
2) Если бы ты освоил стандарт ИСО9660 и его расширения - ты бы не написал такую чушь и глупость, как написал выше. Рекомендую наконец разобратся во всех 3-х версиях
iso9660, его расширениях RockRidge и Joilet, как это все маппится а так же заодно понять UDF.

ПС. RockRidge __никогда__ за кодировки не отвечал

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

у RR есть один несомненный

у RR есть один несомненный плюс, это: RRIP defines additional SUSP tags for support of POSIX semantics

а в плане кириллицы и вообще NLS - RR просто курит ввиду того, что имена файлов могут в принципе быть записаны в любой кодировке и инфы об этой кодировке в RR концептуально нет.

почитал спецификацию RR: 3.4

почитал спецификацию RR:

3.4 File Naming Conventions
In all fields defined in ISO 9660, the character set to be used shall be as specified in ISO
9660. The character set to be used in the System Use Entries defined herein shall depend
upon whether the entries are recorded in a Directory Hierarchy (defined in ISO
9660:6.8.2) associated with a Primary Volume Descriptor or in one associated with a
Supplementary Volume Descriptor.
3.4.1 Primary Volume Descriptor File Naming Convention
Within a Directory Hierarchy identified by a Primary Volume Descriptor of an ISO 9660
volume, "SL" Component Content (see 4.1.3.1) and "NM" Name Content (see 4.1.4) shall
be as defined in POSIX:2.2.2.32 and shall use the portable filename character set as
defined in POSIX:2.2.2.60.
3.4.2 Supplementary Volume Descriptor File Naming Convention
Within a Directory Hierarchy identified by a Supplementary Volume Descriptor of an ISO
9660 volume, the character set used in the System Use Entries defined for the RRIP shall
be the coded graphic character sets identified by the escape sequences in the
Supplementary Volume Descriptor (see ISO 9660:7.4.2).

единственное ценное зерно здесь имхо: character set to be used shall be as specified in ISO9660
однако непонятно, о каком наборе символов 9660 идет речь? Там вроде как вообще [0-9A-Z_]

Beelzebubbie

Beelzebubbie написал(а):
пробовал mount -o <utf8|iocharset=[cp866|cp1251]>

Может глупость, но если попробывать

mount -o iocharset=utf8

опция -o utf8 конвертирует Unicode (16 бит) в UTF-8, но если в имена файлов кодированы в UTF-8 эта опция не поможет.

А вообще на форуме есть целый раздел посвященный локализации, там много полезной информации.

iocharset=utf8

> mount -o iocharset=utf8 так тоже пробовал. Локализация во всем остальном в полном порядке)

Joliet

Если верить вики - joliet file system,
то используется кодировка UCS-2

-o iocharset=ucs-2

хотя такое никогда не использовал

в вики как-то запутано:The

в вики как-то запутано:
The Joliet extension ... allows Unicode characters to be used for all text fields, which includes file names and the volume name. A "Secondary" volume descriptor with type 2 contains the same information as the Primary one, but in UCS-2

подразумевается что Unicode здесь означает UCS-2?
The older UCS-2 (2-byte Universal Character Set) standard is a similar character encoding that was superseded by UTF-16 in Unicode version 2.0

в ядре такого charset'a - ucs[-]2 не видел, как и utf16 ) сооветственно -o iocharset=ucs-2 и не должно и не работает.

Как-то же люди работают с записанными в windows дисками? И, я так понимаю, без особых проблем...

Интереснейшая вещь

Интереснейшая вещь получилась:
ls /mnt/dvd | iconv -f CP1251

выдает искомую кириллицу. Вот такой вот "Unicode" в Joliet... напомню, -o iocharset=cp1251 ни на что не влияет.

Там, скорее всего, ещё и Rock

Там, скорее всего, ещё и Rock Ridge есть, который в той самой cp1251 и записан.
Попробовать монтировать с norock можно.

В самом iso9660 кириллицы нет совсем. Там имена файлов в форме 8.3 и всё.

>Rock Ridge есть - нету, диск

>Rock Ridge есть - нету, диск под виндой записывался
>В самом iso9660 кириллицы нет совсем. Там имена файлов в форме 8.3 и всё. - 8.3 это тока в level 1. А насчет кириллицы... в стандарте конечно только латиница+цифры, но не факт что его все строго соблюдают

несмотря на кажущуюся

несмотря на кажущуюся бессмысленность опции norock в данном случае (проверил, что диск был записан InfraRecorder для win), вариант с
-o norock,utf8
сработал. nojoliet ничего не меняло. Может кто-нибудь это объяснить?

такое впечатление, что norock включил joliet (поскольку utf8 в данном случае дает правильную кириллицу), а без norock имена файлов берутся из ISO9660, где они были записаны в cp1251.
Хотя это, конечно, чушь.

Не совсем чушь. стандарт

Не совсем чушь. стандарт iso9660 вообще и его файловая системя в часности являются одними из самых сложных и запутанных .
Так что надо разбиратся - версия стандарта, какие расширения, естц -все это очень сильно влияет на поведения данной FS

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

подробная инфа по 9660?

чтобы разобраться, надо бы какую-нить утилитку, которая бы показывала подробную служебную инфу о 9660: Level, Joliet/RockRidge, кодировки итд. Встречалась такая?

Beelzebubbie

Beelzebubbie написал(а):
несмотря на кажущуюся бессмысленность опции norock

Вот как раз joilet бессмысленна в данном случае, т.к. RR имеет приоритет над joilet, RR как правило пишут в однобайтной кодировке, вот и результат.
Кроме имён файлов RR позволяет корректно переносить права на файлы и директории, так что приоритет объясним.

выяснилось, что на

выяснилось, что на _проблемном_ диске есть и joliet (UCS) и rockridge (CP1251). Теперь почти все прояснилось, кроме момента с кодировкой RR

если, насколько я понимаю,
1) кодовая страница _нигде_ в RR не хранится;
2) стандарта на кодировку в RR нет, то:

a) определить кодировку в RR простым способом возможным не представляется
b) если важна правильная кириллица vs SUSP фишек, то для автомонтируемых дисков стоит _при_наличии_joliet_ отключать RR

поправьте, если неправ.

Да, это так.

Да, это так.

solved

ну тогда статус вопроса - решено, остался один вопрос:

если на диске только RR, как принудительно указать кодировку - если кодировка локали и RR не совпадают?

Beelzebubbie написал(а): если

Beelzebubbie написал(а):
если на диске только RR, как принудительно указать кодировку - если кодировка локали и RR не совпадают?

А вот никак. Это жуткая недоработка. UDF тут решает много проблем, и ограничения на размер файлов, и названия хранятся разумно, и права можно устанавливать.

попробовал записать DVD

попробовал записать DVD болванку ImageBurn'ом (ISO9660+Joliet). Кириллица в именах файлов отображается без бубнов.
Напрашивается вывод: проблемный диск был записан InfraRecorder'ом (тоже ISO9660+Joliet) с нарушением стандартов?

>Напрашивается вывод:

>Напрашивается вывод: проблемный диск был записан InfraRecorder'ом (тоже ISO9660+Joliet) с нарушением стандартов?

может какие опции в InfraRecordere нащелкали?

сколько пробовал диски после InfraRecord-ера всегда проблем не было.

________________________
"We Will Win"

infrarecorder

узнать, какие были опции, теперь, конечно, вряд ли удастся... однако можно выяснить, что, где и в какой кодировке он записал - еще бы нарыть утилитку чтобы все это смотреть...

Цель в общем-то такая - как вне зависимости от чудес burner'ов всегда иметь кириллицу. Очевидно, что нужно монтировать с разными опциями и конечно же автоматизировать этот процесс (чем мы хуже windows? =)

InfraRecorder

в общем, выяснилось, что InfraRecorder пишет и Joliet и RockRidge, причем последний он пишет в системной локали, от чего вся эта и проблема.

.

Beelzebubbie написал(а):
Вот такой вот "Unicode" в Joliet... напомню, -o iocharset=cp1251 ни на что не влияет.

Насколько я помню, в текущей действительности в качестве аргумента опции монтирования iocharset должна указываться текущая локаль.

По крайней мере у меня
dev/cdrom /mnt/cdrom iso9660 noauto,user,iocharset=koi8-r,mode=0444 0 0
работает как надо.

:wq
--
Live free or die

полностью согласен, и у меня

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

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".