Ruby и юникод

Все о программировании под *nix
Аватара пользователя
Vorax
Увлекающийся
Сообщения: 105
Зарегистрирован: 17 фев 2005, 13:36
Откуда: Минск - С. Петербург
Контактная информация:

Ruby и юникод

Сообщение Vorax »

Я конечно знаю, что руби хранит строки не в юникоде.

Тогда как быть со строками содержащими, допустим, русские буквы.

"Lщ".length равно 3
Возможно твои ошибки - это то, что нужно Миру. (Вантал)

Аватара пользователя
Vorax
Увлекающийся
Сообщения: 105
Зарегистрирован: 17 фев 2005, 13:36
Откуда: Минск - С. Петербург
Контактная информация:

Сообщение Vorax »

Кстати, в питоне то же самое.

len("питон") равно 10

Сколько пользуюсь, а никогда не проверял. И что удивительно, все как-то работает, и ни разу не довелось наступить на эту граблю :)
Возможно твои ошибки - это то, что нужно Миру. (Вантал)

Аватара пользователя
leikind
Неотъемлемая часть форума
Сообщения: 811
Зарегистрирован: 20 июн 2002, 03:02
Откуда: Брюссель
Контактная информация:

Сообщение leikind »

С length как раз проблем нет.

Код: Выделить всё

    require 'jcode'
    s = "Καλημέρα κόσμε!"
    p s.jlength  # => 15

Изображение

Аватара пользователя
leikind
Неотъемлемая часть форума
Сообщения: 811
Зарегистрирован: 20 июн 2002, 03:02
Откуда: Брюссель
Контактная информация:

Сообщение leikind »

В строке присваивания были греческие буквы
Изображение
Изображение

Аватара пользователя
Vorax
Увлекающийся
Сообщения: 105
Зарегистрирован: 17 фев 2005, 13:36
Откуда: Минск - С. Петербург
Контактная информация:

Сообщение Vorax »

require 'jcode'
s = "Καλημέρα κόσμε!"
p s.jlength

У меня 28 :)
Возможно твои ошибки - это то, что нужно Миру. (Вантал)

Аватара пользователя
Vorax
Увлекающийся
Сообщения: 105
Зарегистрирован: 17 фев 2005, 13:36
Откуда: Минск - С. Петербург
Контактная информация:

Сообщение Vorax »

$KCODE = "u"
require 'jcode'
s = "Καλημέρα κόσμε!"
p s.jlength

а вот теперь 15
Возможно твои ошибки - это то, что нужно Миру. (Вантал)

Аватара пользователя
mend0za
Неотъемлемая часть форума
Сообщения: 2332
Зарегистрирован: 30 авг 2002, 12:33
Откуда: Minsk

Сообщение mend0za »

возможно Ruby не помешало бы поучится у TCL. Там внедрение юникода произошло давно и повлекло за собой интересные явления:
функции определения длины строки в символах и размера строки в байтах - это 2 разные функции.
И увидел я зверя, выходящего из тундры. И число его было 3.14159265358979324...

Ответить