Показаны сообщения с ярлыком Юникод. Показать все сообщения
Показаны сообщения с ярлыком Юникод. Показать все сообщения

воскресенье, 29 августа 2010 г.

Имена файлов и директорий

Большинство современных программ разрабатывается с поддержкой Юникода, т.е. изначально готовы к работе с кириллицей. Связано это не с тем, что новое поколение программистов умнее старого, а с тем что проблема решается на уровне базовых библиотек и средств разработки программ. Прекрасным примером таких библиотек может служить Qt от Nokia. Ее достоинством является не только всем известная  многополатформенность, но и легкость интернационализации благодаря удачным решениям на уровне базовых классов.

К сожалению, огромнейшее количество программ, в том числе и хороших, создается или продолжает существовать без поддержки Юникода. Причины могут быть разные: узкая изначальная ориентированность на рынок США, простая неопытность программистов, недостаточное тестирование, и т.п. Данная проблема более присуща проектам с открытом исходным кодом с малым количеством программистов, тестировщиков и пользователей.

Больше  всего неюникодность программ заметна в непонимании юникодных имен файлов. С этом зачастую просто ничего нельзя поделать и приходится мириться. Вот некоторые полезные рекомендации по избежанию проблем с русскими именами файлов.
  • Не устанавливать программы в директории с русскими именами.
  • Давать латинские имена файлам, выкладываемым в интернет и отправляемым по электронной почте.
  • Не архивировать файлы с русскими именами, если собираетесь выкладывать их в интернет или отправлять их по электронной почте. Ваш архиватор может быть в порядке, но не известно, чем будет пользоваться тот, с кем вы делитесь своим архивом. Кстати, всем рекомендую бесплатный и очень хороший архиватор 7-Zip.

пятница, 13 августа 2010 г.

Почему абракадабра вместо кириллицы?

Люди обмениваются файлами (музыка, видео, картинки, тексты) и с сожалением обнаруживают, что мир информатики несовершенен - разные программы могут неверно отображать кириллицу. Почему это происходит? Чаще всего из-за программной ошибки, называемой непереносимость программы или данных на локализованную ОС (например, с русской Windows на немецкую и наоборот). Решается эта программная ошибка довольно просто - программа должна использовать Юникод. Проблема в том, что модернизация уже готовых программ под Юникод - дело довольно накладное. Проще всё оставить как есть, пока пипл хавает.

Огромное количество программ разрабатывается в США и Великобритании, где правило один байт - один символ, является истинным. Затем эти программы подгоняются под Российский рынок и на ура продаются а чаще воруются. Программы прекрасно работают с кириллицей, но только на русских Windows. Итак, довольный пользователь решил поделиться своим творением с друзьями, живущими скажем в Германии. Делится, но они не радуются его творению, т.к. вместо названий песен и фильмов, вместо остроумных комментариев они видят абракадабру. Вот несколько примеров.
Результат ошибки в популярном архиваторе. Не помню в каком, если честно. Я сохранил эти файлы у себя, т.к. мне интересна тема.
Вот как выглядит кириллица в Windows Media Player в испанской Windows
А это якобы "русский" utf-8 интерфейс FreeCommander версии 2009.02a в испанской Windows.
Тот же FreeCommander версии 2009.02a, но в  кодировке Windows-1251 в испанской Windows.
На самом деле примеров того как различные программы коверкают русский язык можно привести массу. Среди них игры, почтовые клиенты, текстовые редакторы, и т.д., и т.п. Вот моя классификация проблем с русским языком:
  1. Неисправимые или нерекомендуемые к исправлению. Например, в какой-либо игре не получается ввести свое имя русскими буквами. То есть оно вводится, но абракадаброй. Рецепт в данном случае - игнорировать эту мелкую проблему, т.к. способ ее исправления (если он существует) затронет ключевые настройки операционной системы и может негативно сказаться на функционировании других программ. Еще пример: пользовательский интерфейс абракадаброй как в приведенном выше примере с FreeCommander. Тоже не рекомендую исправлять по той же причине. Лучше включите английский интерфейс. Заодно и язык подучите :-).
  2. Временно исправимые. Например, вы получили письмо абракадаброй, а смена кодировки, в вашем почтовом клиенте не предусмотрена. В таком случае можно пойти на интернет-сервис декодера почты, например этот www.charset.ru, и прочесть свое письмо. Проблема временно исправимая, т.к. письмо вы свое прочесть сможете, но в почтовом клиенте оно так и останется абракадаброй.
  3. Исправимые. Как правило речь идет о программном исправлении ошибок. Т.е. либо сам автор программы исправляет проблему, либо добрые люди создают специальную программу, которая чинит проблемные файлы. Я не могу привести конкретных примеров. Скажу лишь, что мне самому приходилось создавать подобные программы для личного использования. Надеюсь со временем сделать некоторые из них пригодными для непрофессиональных пользователей и опубликовать в этом блоге.