быстрый вопрос о встроенной функции string
рыбы, в частности string split
.Его реализация касается UTF любого размера?И, если это так, знает ли его реализация, как обрабатывать UTF-32?
В качестве примера я написал простую функцию, которая читает из stdin и разбивает строку на массив.
function traverse
set --local text (string split '' (read))
echo $text
end
traverse
Затем я вызываю эту функцию в сценарии.Я использовал команду echo "test" | fish traverse.fish
, которая выводит t e s t
, так что это хорошо.
echo "test 漢字" | fish traverse.fish
выводит t e s t 漢 字
, так что это работает.
Этот следующий случай пекулярен.
echo "test 漢字 الْحُرُوف الْعَرَبِيَّة" | fish traverse.fish
выходы t e s t 漢 字 ا ل ْ ح ُ ر ُ و ف ا ل ْ ع َ ر َ ب ِ ي َ ّ ة
.Я не знаю арабский, но правильно ли это?Кажется, что арабские символы могут быть UTF-32, и сорта могут произойти с более простыми символами, но это только предположение.Моя интуиция говорит, что это не так, как арабский язык должен быть разделен.
Знание деталей string split
относительно UTF поможет мне подумать, если предположить, что это действительно какая-то ошибка.
РЕДАКТИРОВАТЬ: лучший способ сформулировать мой вопрос: разделить ли функция string split
рыбы между всеми графемами, определенными UTF, или просто UFT-8 / UTF-16?