Ядовитый эмодзи-персонаж Руби?

У меня установлен Ruby 3.3.4 на MacOS 14.6.1.

Предположим, у меня есть эта строка в оболочке:

Если я теперь передам эту строку в Ruby, я получу второй эмодзи, разбитый на составные части:

То же самое, если я прочитаю эту строку из файла:

То же самое в IRB:

Но если я заменю ☺️ другим эмодзи (который также является многобайтовым), проблема исчезнет:

Есть идеи, почему эмодзи ☺️ дает такой результат?

$ st="0😀2☺️4🤪6🥳8🥸"
$ echo "$st"
0😀2☺️4🤪6🥳8🥸
$ echo "$st" | ruby -lne 'p $_.split("")'
["0", "😀", "2", "☺", "️", "4", "🤪", "6", "🥳", "8", "🥸"]
                  ^    ^   # should be ONE grapheme
$ cat wee_file
0😀2☺️4🤪6🥳8🥸

$ ruby -lne 'p $_.split("")' wee_file 
["0", "😀", "2", "☺", "️", "4", "🤪", "6", "🥳", "8", "🥸"]
irb(main):001> File.open('/tmp/wee_file').gets.split("")
=> ["0", "😀", "2", "☺", "️", "4", "🤪", "6", "🥳", "8", "🥸", "\n"]
$ st2="0😀2🐱4🤪6🥳8🥸"
$ echo "$st2" | ruby -lne 'p $_.split("")'
["0", "😀", "2", "🐱", "4", "🤪", "6", "🥳", "8", "🥸"]

# also from a file and also in IRB..
Владислав
Вопрос задан6 апреля 2024 г.

1 Ответ

2
Стоян
Ответ получен3 сентября 2024 г.

Ваш ответ

Загрузить файл.