Русские субтитры: Корректное отображение субтитров с диакритикой (Французских, чешских и т. п.) - Русские субтитры

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Корректное отображение субтитров с диакритикой (Французских, чешских и т. п.)

#1 Пользователь офлайн   Abadaya Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Members
  • Сообщений: 4
  • Регистрация: 26 Июнь 08
  • Страна:

Отправлено 26 Июнь 2008 - 15:38

Уважаемые собратья.
Столкнулся с банальной, но до сих пор не преодоленной мною проблемой. Скачанные французские, испанские и чешские субтитры отказываются грамотно отображать Subtitle Workshop, DVD Lab Pro, Subtitle Creator и др.
В "Языке и региональных стандартах" загрузил все необходимые "Кодовые страницы таблиц преобразования" - безрезультатно. Причем LabPro и Subtitle Workshop начинают корректно отображать скачанные французские и испанские титры, если выбрать "Вьетнамский"!!! набор символов, а вот восточнославянские языки ни в какую. Ставлю шрифт Arial - он вроде поддерживает все наборы символов.
Может кто-то сталкивался с подобным. Буду очень благодарен за совет.
0

#2 Пользователь офлайн   НуПогоди Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Избранные
  • Сообщений: 832
  • Регистрация: 31 Июль 06
  • Страна:
  • Прислал(a) субтитров: 46
  • Своих переводов: 19

Отправлено 26 Июнь 2008 - 16:47

Иногда подобные метаморфозы случаются с пропатчеными версиями Windows.

Цитата

Страницы кодировки: ликбез

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

Ядро систем WinNT (на котором построены собственно Windows NT, 2000, XP, 2003 и Vista) основано на 16-битном наборе символов - UTF-16 (часто называемом просто юникодом, хотя это и не совсем корректно). Все операции в системе выполняются с этими 16-битными строками, что позволяет работать в мультиязычной среде без малейших проблем. Одна программа может сочетать в себе названия кнопок и пунктов меню сразу на нескольких языках, что было невозможно при использовании 8-битных (ANSI) строк. Восемью битами можно закодировать лишь 256 различных символов - очевидно, что этого для многоязычности катастрофически мало, невозможно закодировать таким количеством символов все необходимые буквы всех языков. 16 же бит позволяют кодировать 65536 символов, и этого уже вполне достаточно.

Системы Windows прошлого поколения, основанные на ядре Win9x (версии 95, 98, ME), работали с 8-битной кодировкой, и, соответственно, все приложения создавались для работы с ней же. Для поддержки разных языков было введено понятие кодовая страница. Каждая кодовая страница определяла, какие конкретно символы будут находиться в числе тех самых 256 возможных (а точнее - 128 символов, поскольку первые 128 изначально зарезервированы стандартом под латинский алфавит, цифры, символы пунктуации и пр.). Стоит отметить, что кодовая страница - это именно поддержка символов, а не языка. То есть, если несколько языков могут использовать один и тот же набор символов, им присваивается одна общая кодовая страница. Например, у русского, украинского и белорусского языков общая кодовая страница - 1251, у английского, немецкого, французского и многих других - 1252, и т.д. В системных настройках в Win9x выбиралась кодовая страница - одна на всех - и всё работало с соответствующим набором символов.

Разумеется, с появлением WinNT все существующие разработки нельзя было просто взять и выбросить только из-за того, что они не поддерживают юникод - никто бы просто не перешёл на эту новую систему. Поэтому в WinNT решили реализовать поддержку программ, работающих с 8-битными строками. Но как это сделать? Очень просто: для каждого системного вызова делается два варианта: юникодный и ANSI. Первый работает непосредственно с системой, а второй предварительно перекодирует 8-битную строку в 16-битную, после чего передаёт эту строку юникодной версии системной функции. Кодовая страница теперь используется для этого преобразования. Понятно, что если текст, написанный в русской кодовой странице, сконвертировать в юникод, применяя какую-нибудь другую кодовую страницу, то получится абракабадра: ведь на месте русских символов окажутся символы другого языка. Вот мы и подошли, наконец, к главному вопросу: почему некоторые программы копируют в буфер белиберду.

Копирование в буфер - это обычный системный вызов. А значит, перед помещением текста в буфер система преобразовывает его в 16-битную кодировку, если это требуется. Самое главное здесь - правильно выбрать кодовую страницу. И что же делает многомудрая Windows? Она не находит ничего умнее, как взять кодовую страницу, соответствующую текущей раскладке клавиатуры! Таким образом, если в момент копирования текста включена английская раскладка, система ничтоже сумняшеся переводит текст, используя английскую кодовую страницу, которая к русскому языку не имеет ни малейшего отношения. Что оказывается при этом в буфере обмена, думаю, описывать не надо.

Что же делать? Материть Билла Гейтса - это, конечно, святое, но, увы, это не поможет. Варианта два. Первый - каждый раз перед копированием русского текста переключаться на русскую раскладку. Возможно, кому-то этот вариант подойдёт. Если же нет - остаётся второй способ: убедить Windows, что английская кодовая страница (1252) и русская (1251) - одно и то же. Именно это делает приведённая ниже замена ключа в реестре:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1252"="c_1251.nls"

Данный патч указывает Windows, что трансляция 8-битных строк в 16-битные в 1252 кодовой странице должна производиться с использованием файла c_1251.nls, который, как легко догадаться, описывает 1251 кодовую страницу. В результате, даже если включена английская раскладка, преобразование русскоязычной строки в 16-битный формат пройдёт корректно, и в буфере окажется правильный текст.

Казалось бы - используй этот патч и радуйся жизни. Но увы, не всё так просто. Во-первых, применив этот патч, вы лишаете себя возможности полноценно работать с оригинальной 1252 кодовой страницей. Нельзя будет системными вызовами перекодировать, например, немецкую строку из 8 бит в 16: ведь немецкий язык использует ту же самую 1252 кодовую страницу. Другая проблема: представьте, что вы создали русскоязычный текст в программе типа MS Word, не поддерживающей юникод, и при этом была включена английская раскладка. При сохранении программа пишет в файл, что кодовая страница английская. Всё работает корректно, пока этот файл используется на компьютере с переопределённой кодовой страницей. Но стоит его открыть на другом компьютере, где этот патч не был применён, весь русский текст, помеченный как английский, сразу отобразится кракозябрами - ведь на том компьютере для его преобразования будет использоваться "настоящая" 1252 кодовая страница.

Описанные здесь проблемы показывают, что, к сожалению, универсального решения не существует. Любое из них имеет как плюсы, так и минусы. И решать, какой вариант решения проблемы удобнее, каждый должен сам для себя.

Думайте сами, решайте сами
Иметь или не иметь.
© "Ирония судьбы" ;-)

Источник: http://www.tckb.ru/i...

Прикрепленные файлы

  • Прикрепленный файл  Czekh.png (13,42К)
    Количество загрузок:: 17

0

#3 Пользователь офлайн   Abadaya Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Members
  • Сообщений: 4
  • Регистрация: 26 Июнь 08
  • Страна:

Отправлено 26 Июнь 2008 - 19:54

Просмотр сообщенияНуПогоди (26.6.2008, 16:47) писал:

Иногда подобные метаморфозы случаются с пропатчеными версиями Windows.

Источник: http://www.tckb.ru/i...
0

#4 Пользователь офлайн   Вита Алая Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Uploader
  • Сообщений: 58
  • Регистрация: 24 Июнь 08
  • Пол:Женщина
  • Страна:
  • Прислал(a) субтитров: 64
  • Своих переводов: 62

Отправлено 26 Июнь 2008 - 21:31

Просмотр сообщенияAbadaya (26.6.2008, 18:54) писал:

Большое спасибо за ответ, Ну Погоди. Но, боюсь он не приблизил меня к решению проблемы. У меня XP SP3 (на SP2 была та же история) и в титрах на месте диакритики выползают "крабозябры" даже при чешской раскладке клавиатуры. Более того, полностью корректно чешский текст не берет даже Word ни в одной из кодировок!
Скажите пожалуйста, доставляли ли Вы "Кодовые таблицы страниц преобразования" в "Языке и региональных стандартах"?


Я подтверждаю, что у меня тоже всё работает с французским, хотя за чешский не поручусь.
Версия SW не 4, а 2.51, 4 глюконавтит у меня по иным параметрам.

Кодовые страницы при установке винды обычно добавляю. Недавно переставляла поверх - не добалвляла, но это ж поверх.

Вы знаете, какая кодовая страница должна быть в HTML или почте, чтобы корректно отображались чешские символы? Насколько знаю, это не та же что для Западной Европы.
Т.к. если по ошибке выбрать на французское письмо восточную Европу, то символы неправильные, следовательно и наоборот, т.е. 1252 может быть не тем вопросом.

Набор символов в кодовой страницу ограничец, поэтому у вас скажем есть или русские буквы или латинские крокозябры вместо них (так обычно было), однако в случае с языками, пишущими латиницей, а ведь Чешский пишется латиницей? наоборот вместо диакритики должны быть русские буквы. А у вас что, не они?... Может, скриншот выложите?

Шрифт Arial содержит все символы, но музыку заказывает "кодовая страница", так что выбор OpenType Font со набором символов для всех скажем европейских языков и арабский сразувсё равно ничего не даст, пока кодовая страница настроена неправильно. Если у вас не русские буквы вместо чешской диакритики, то я так понимаю, точно с кодовыми страницами наворочено чего-то в регистре когда-то. Надо исправлять.

Если дадите файл, могу попробовать и скриншотнуть вам, что отображается у меня, просто ради интереса, хотя чешские кодировки я на машину себе никогда не ставила. У меня тоже WinXP SP3.

Но по-моему вам в любом случае в первую голову нужно выяснить, какая правильная кодовая страница для чешского языка и посмотреть в регистре, чтобы не было про неё намучено ничего (если она вообще установлена).
0

#5 Пользователь офлайн   D!ig Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Members
  • Сообщений: 140
  • Регистрация: 11 Март 06
  • Страна:

Отправлено 27 Июнь 2008 - 02:01

Просмотр сообщенияAbadaya (26.6.2008, 15:38) писал:

Ставлю шрифт Arial - он вроде поддерживает все наборы символов.

Тот Arial (arial.ttf, размер 358KB), что присутсвует в дистрибутиве Windows, скорее всего, поддерживает не все наборы символов.

Все наборы символов поддерживает Arial Unicode MS (arialuni.ttf, размер 22MB), ставиться опционально вместе с MS Office, может и как-то отдельно его можно заполучить.

p/s/ На 100% не уверен.
0

#6 Пользователь офлайн   Abadaya Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Members
  • Сообщений: 4
  • Регистрация: 26 Июнь 08
  • Страна:

Отправлено 27 Июнь 2008 - 14:19

Прежде всего огромное спасибо за ответы WillKatt и D!ig

Постараюсь прояснить положение.

Просмотр сообщенияWillKatt (26.6.2008, 21:31) писал:

Кодовые страницы при установке винды обычно добавляю. Недавно переставляла поверх - не добалвляла, но это ж поверх.


А что вы имеете в виду поверх?

Просмотр сообщенияWillKatt (26.6.2008, 21:31) писал:

Вы знаете, какая кодовая страница должна быть в HTML или почте, чтобы корректно отображались чешские символы? Насколько знаю, это не та же что для Западной Европы.
Т.к. если по ошибке выбрать на французское письмо восточную Европу, то символы неправильные, следовательно и наоборот, т.е. 1252 может быть не тем вопросом.


Windows-1250 для языков Центральной Европы, которые используют латинское написание букв (польский, чешский, словацкий, венгерский, словенский, хорватский, румынский и албанский)

Просмотр сообщенияWillKatt (26.6.2008, 21:31) писал:

Набор символов в кодовой страницу ограничец, поэтому у вас скажем есть или русские буквы или латинские крокозябры вместо них (так обычно было), однако в случае с языками, пишущими латиницей, а ведь Чешский пишется латиницей? наоборот вместо диакритики должны быть русские буквы. А у вас что, не они?... Может, скриншот выложите?


Они, русские. В каждый язык стараются пробраться.

Просмотр сообщенияWillKatt (26.6.2008, 21:31) писал:

Шрифт Arial содержит все символы, но музыку заказывает "кодовая страница", так что выбор OpenType Font со набором символов для всех скажем европейских языков и арабский сразувсё равно ничего не даст, пока кодовая страница настроена неправильно. Если у вас не русские буквы вместо чешской диакритики, то я так понимаю, точно с кодовыми страницами наворочено чего-то в регистре когда-то. Надо исправлять.

Но по-моему вам в любом случае в первую голову нужно выяснить, какая правильная кодовая страница для чешского языка и посмотреть в регистре, чтобы не было про неё намучено ничего (если она вообще установлена).


Совершенно с вами согласен, и спасибо за совет, попробую, только в регистре я не эксперт.

Тем временем выяснилось следущее:

1) дело тут целиком и полностью в моей винде. Понял я это, отобрав у друга ноутбук с лицензионной Xp2. Никаких таблиц он не доставлял, но SW у него отображает корректно как французские и испанские в ANSI, так и чешские в EastEurope. Буду работать пока на нем, но желание иметь собственную нормальную систему не пропадает.

2)До сего момента генерил из текста в битмэп только русские и английские титры, и столкнувшись с необходимостью вставить в фильм упомянутые "диакритические" титры (исходник в текстовом варианте) на ноутбуке столкнулся со следующей проблемой: все привычные генераторы субтитров (встроенные в DVD Lab Pro, Scenarist отдельные Subtitle Creator, Advanced Subtitler) предлагают выбирать из следующего набора символов (для Arial Unicode MS - спасибо D!ig:

Киррилический
Западный
Японский
Хангыль
Хангыль (Johab)
Китайский 2312
Китайский (Big5)
Иврит
Арабский
Греческий
Турецкий
Балтийский
Центральноевропейский
Тайский
Вьетнамский

EastEurope ОТСУТСТВУЕТ! При последовательном выборе каждого из наборов во всех этих прогах вылезают кракозябры (правда уже латинские)

Subtitle Workshop и найденная Txt2Sup (единственная прога, согласившаяся правильно сгенерить чешские титры) дружно предлагают вот такие наборы символов:


ANSI
Default
Symbol
Shiftjis
Hangeul
Johab
GB2312
Chinese Big5
Greek
Turkish
Vietnamese
Hebrew
Arabic
Baltic
Cyrrilic
Thai
EastEurope

Сравнивая эти 2 варианта можно предположить, что EastEurope соответсвует ЦентральноЕвропейскому, но, повторюсь, при выборе последнего в LabPro, например, появляется абракадабра. Но ведь чешсие ребята наверняка нормально работают в LabPro, значит что-то не так уже с ноутом?

Буду рад любым подсказкам!
0

#7 Пользователь офлайн   НуПогоди Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Избранные
  • Сообщений: 832
  • Регистрация: 31 Июль 06
  • Страна:
  • Прислал(a) субтитров: 46
  • Своих переводов: 19

Отправлено 27 Июнь 2008 - 16:01

Просмотр сообщенияAbadaya (26.6.2008, 17:54) писал:

Скажите пожалуйста, доставляли ли Вы "Кодовые таблицы страниц преобразования" в "Языке и региональных стандартах"?

1. Не добавлял. У меня английская версия Windows XP, для неюникодовских программ используется CP1251...
2. Кроме того, я так и не понял, какие именно страницы установлены по HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage\1250 и 1252?
Если там стоят неверные значение, то исправьте. Если всё правильно, т.е. так

Цитата

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1250.nls"
"1252"="c_1252.nls"
проверьте в charmap наличие соответствуюших символов в используемом шрифте. Ничего более умного пока в голову не приходит...

[EDIT] Надеюсь, запустить Start > Run > regedit > F3 > c_1251.nls труда не составит?
0

#8 Пользователь офлайн   Abadaya Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Members
  • Сообщений: 4
  • Регистрация: 26 Июнь 08
  • Страна:

Отправлено 27 Июнь 2008 - 17:08

НуПогоди, Вы спасли меня. :ok: Реестр действительно был пропатчен, теперь все работает на ура. Ваш должник. Если ищете какие-нибудь фильмы - буду рад помочь. Могу пригласить на закрытые трекера.

Всем еще раз спасибо за участие и советы. Тема закрыта. :close_tema:
0

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему