на главнуюВсе эхи RU.PERL
войти ?

Re: имена файлов

От Eugene Grosbein (2:5006/1) к Stas Mishchenkov

В ответ на Заголовок предыдущего сообщения в треде (Имя Автора)


23 мая 2020, суббота, в 13:44 NOVT, Stas Mishchenkov написал(а):

SM> Hа ntfs имена файлов хранятся в UTF-16, в консоль при этом винда отдает их
SM> в cp1251. Если нужно создать список файлов в cp866, то в именах файлов иногда
SM> встречается следующее:
SM> cp1251: Ленинград - Ах уехала жена.mp3
SM> cp866: Ленинград ? Ах уехала жена.mp3
SM> Как правильно избежать такой ситуации, ну, кроме переименования файлов,
SM> разумеется?

И в наборе символов Unicode (а UTF-16 лишь один из технических способов
представления Unicode), и в наборе символов cp1251 есть символы,
которых тупо нет в cp866, таких как длинное тире или "типографские кавычки".

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

CP866 отличается от KOI8-R только порядком символов в таблице,
а сам набор символов тот же самый, поэтому тебе, может быть,
пригодится готовая таблица для такиз замен за авторством
покойного Чернова из его утилиты fromwin, правда в синтаксисе C:

win2koi8[] = {
"Ъ", "Г", "\'", "г", "\"", "...", "+", "+", /* 80-87 */
"#", "%", "ЛЬ", "<", "HЬ", "К", "h", "Ц", /* 88-8F */
"h", "`", "\'", "\"", "\"", "\x95", "-", "-", /* 90-97 */
"#", "(TM)", "ль", ">", "нь", "к", "h", "ц", /* 98-9F */
"\x9A", "У", "у", "J", "$", "Г", "|", "$", /* A0-A7 */
"\xB3", "\xBF", "Е", "\"", "^", "-", "(R)", "I", /* A8-AF */
"\x9C", "+", "I", "i", "г", "m", "#", "\x9E", /* B0-B7 */
"\xA3", "N", "е", "\"", "j", "S", "s", "i", /* B8-BF */
"\xE1", "\xE2", "\xF7", "\xE7", "\xE4", "\xE5", "\xF6", "\xFA", /* C0-C7 */
"\xE9", "\xEA", "\xEB", "\xEC", "\xED", "\xEE", "\xEF", "\xF0", /* C8-CF */
"\xF2", "\xF3", "\xF4", "\xF5", "\xE6", "\xE8", "\xE3", "\xFE", /* D0-D7 */
"\xFB", "\xFD", "\xFF", "\xF9", "\xF8", "\xFC", "\xE0", "\xF1", /* D8-DF */
"\xC1", "\xC2", "\xD7", "\xC7", "\xC4", "\xC5", "\xD6", "\xDA", /* E0-E7 */
"\xC9", "\xCA", "\xCB", "\xCC", "\xCD", "\xCE", "\xCF", "\xD0", /* E8-EF */
"\xD2", "\xD3", "\xD4", "\xD5", "\xC6", "\xC8", "\xC3", "\xDE", /* F0-F7 */
"\xDB", "\xDD", "\xDF", "\xD9", "\xD8", "\xDC", "\xC0", "\xD1" /* F8-FF */
};

Тут символ многоточия заменяется на три точки, варианты тире
на дефис, символ копирайта на (R) и так далее.

Eugene
--
Hаучить не кланяться авторитетам, а исследовать их и сравнивать их поучения
с жизнью. Hаучить настороженно относиться к опыту бывалых людей, потому что
жизнь меняется необычайно быстро.
--- slrn/1.0.3 (FreeBSD)
* Origin: RDTC JSC (2:5006/1@fidonet)

Ответы на это письмо:

From: Username
Заголовок следующего сообщения в треде может быть длинным и его придется перенести на новую строку

From: Username
Или коротким

FGHI-url этого письма: area://RU.PERL?msgid=grosbein.net+9d47d3b0