Ruby v1.8 действительно нестабилен в Unicode.Я считаю v1.9 минимальной версией Ruby для вменяемой обработки.Даже тогда драгоценный камень unicode_utils
для v1.9.1 для лучшего абсолютно необходим.В нем есть такие вещи, как полное отображение случаев и функции нормализации.Вам действительно это нужно.
К сожалению, оно не включает в себя сортировку, , поэтому вы не можете алфавитные сортировки в Ruby так, как вы можете в Perl илиязыки с доступом к библиотекам ICU.Труднее всего разобраться в сопоставлении, поэтому неудивительно, что оно отсутствует.Но это важно, потому что оно лежит в основе почти всего, что мы когда-либо делаем с текстом.Это не просто сортировка;речь идет о простых сравнениях строк.Большинство людей не осознают этого.
Я говорю о поддержке Unicode в Ruby и о том, что вы можете сделать, чтобы немного облегчить свою жизнь, в моем третьем выступлении на OSCON пару недель назад.Признаюсь, я отказался от Ruby v1.8;это было слишком сложно.
Это не удар по Ruby, потому что то же самое можно сказать и о большинстве современных языков, которые не являются последними версиями.
- Вы не будете довольны Ruby и Unicode, если вы не используете v1.9.
- Если вы не используете Python v3 (и предпочтительно v3.2 или, вероятно, v3).3) с широкой сборкой, вы будете несчастливы в Python с Unicode.
- Если вы не используете Java v1.7, вы будете недовольны Java с Unicode - и, возможно, даже тогда.: (
- Если вы не используете Perl v5.14 или выше, вы, вероятно, будете несчастны в Perl с Unicode.
Ситуация с этими четырьмя, таким образом, совершенно не похожа наодин (ие) с PHP, Javascript и Go. С этими последними тремя языками не имеет значения какую версию вы используете, потому что
- С первыми двумя вы будетевсегда недовольны их поддержкой Unicode. Это действительно ужасно, потому что люди, использующие их, почти никогда не могут переключиться на настоящий язык с реальной поддержкой Unicode. Ниша слишком специализирована.
- В то время как с Go вы будетеникогда не разочаровывайтесь в поддержке Unicode - если только вы не спешите: модуль нормализации очень близок к тому, чтобы быть готовым к работе, а модуль сопоставления работает, но на самом деле он намного сложнее.
Можно ли использовать Ruby v1.9?