Программирование на языке Ruby
Шрифт:
Помимо названия кодировки,
Обычно
Этот же флаг позволяет очистить строку от неверных данных:
Иногда некоторые символы нельзя представить в целевой кодировке. Обычно в этом случае возбуждается исключение. Флаг
Этим свойством можно воспользоваться, чтобы получить URL, содержащий только ASCII-символы:
Однако работать это будет лишь в отношении латиницы. В листинге 4.2 приведен реальный пример совместного применения библиотек
Это еще не все системные вопросы, связанные с преобразованием кодировок. Предположим, что в операционной системе, где установлен Ruby, определена локаль, отличная от UTF-8, или Ruby общается с ОС не в UTF-8 (так, например, обстоит дело в дистрибутиве для Win32). Тогда возникают дополнительные сложности.
Например, Windows поддерживает Unicode в именах файлов и на системном уровне работает исключительно в Unicode. Но в настоящее время Ruby взаимодействует с Windows при помощи устаревших кодовых страниц. Для англоязычного и большинства других западных изданий это страница 1252 (или
Внутри программы можно пользоваться и кодировкой UTF-8, но все имена файлов придется перевести в кодировку, заданную кодовой страницей. Iconv поможет это сделать, но важно не забывать, что кодовая страница позволяет описать только малое подмножество всех символов, имеющихся в Unicode.
Кроме того, это означает, что пока Ruby для Windows не может открывать файлы, имена которых нельзя описать с помощью кодовой страницы. Это ограничение не относится к Mac OS X, Linux и другим системам с локалью UTF-8.
4.3. Справочники сообщений
Ложбан не зависит от национальных особенностей. Его словарь был создан алгоритмически на основе шести наиболее распространенных в мире разговорных языков: китайского, хинди, английского, русского, испанского и арабского.
Справочник сообщений — это набор сообщений на одном языке. Данное понятие неотъемлемо от концепции локализации (L10N). Идея в том, чтобы отделить языково-зависимые строки от остальной программы. Тогда для того, чтобы программа «заговорила» на другом языке, достаточно всего лишь подменить справочник.
«Наилучший» способ реализовать эту идею в Ruby — воспользоваться библиотекой Ruby-GetText-Package. Я буду называть ее просто
Журнал «Если», 1998 № 09
9. Журнал Если
Фантастика:
научная фантастика
рейтинг книги
Битва королей
2. Песнь Льда и Огня
Фантастика:
фэнтези
рейтинг книги
Письма (1870)
Проза:
русская классическая проза
рейтинг книги
Александр Невский. Сборник
Всемирная история в романах
Проза:
историческая проза
рейтинг книги
Олимпия Клевская
Приключения:
исторические приключения
рейтинг книги
Софт. Тело (Software. Wetware)
Проза:
контркультура
рейтинг книги
Наемные убийцы
рейтинг книги
Камень. Книга восьмая
8. Камень
Фантастика:
фэнтези
боевая фантастика
рейтинг книги
Чёрная магия (Сборник)
Шедевры фантастики
Фантастика:
фэнтези
рейтинг книги
Земля под ногами. Из истории заселения и освоения Эрец Исраэль. 1918-1948. Книга 2
Научно-образовательная:
история
рейтинг книги
Кубинский зал
Детективы:
прочие детективы
рейтинг книги
Княжна с тараканами
6. Любимица фортуны Степанида Козлова
Детективы:
иронические детективы
рейтинг книги
Библия Раджниша. Том 2. Книга 1
Религия и эзотерика:
самосовершенствование
эзотерика
рейтинг книги