Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Кириллица, lua, и разбиение на слова  (Прочитано 3024 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн piyavking

  • Автор темы
  • Активист
  • *
  • Сообщений: 742
  • никогда так не было, чтобы никак не было
    • Просмотр профиля
    • Пиявкин
Опять кириллица даёт стране угля: Есть lua скрипт, в нём строчки:

...

     s = "hello world from lua"

     for w in string.gmatch(s, "%a+") do

# ...строка прекрасно разбивается на слова

     end

     s = "кириллическая строка не читается"

     for w in string.gmatch(s, "%a+") do

#...всё печально

     end

...
« Последнее редактирование: 06 Марта 2013, 17:50:03 от regenerat »
крайний LTS Netboot, awesomeWM, urxvtd, firefox, vim/gvim, mpv/smplayer, linux-lowlatency, jack, guitarix, lmms, ardour, mednafen, dsda-doom

appomsk

  • Гость
Re: Кириллица, lua, и разбиение на слова
« Ответ #1 : 07 Марта 2013, 06:51:36 »
В Луа восьмибитные символы, в Линуксе сейчас повсеместно используется кодировка UTF-8, в которой кириллические символы занимают два байта (а ascii - основные латинские - один байт, поэтому с ними все нормально).

Нужно или искать библиотеку Луа для работы с UTF, или конвертировать в восьмибитную кодировку (CP1251 - Windows - самая распространенная).

Оффлайн piyavking

  • Автор темы
  • Активист
  • *
  • Сообщений: 742
  • никогда так не было, чтобы никак не было
    • Просмотр профиля
    • Пиявкин
Re: Кириллица, lua, и разбиение на слова
« Ответ #2 : 07 Марта 2013, 08:16:27 »
appomsk,

Всё пока норм, конструкция "for w in string.gmatch(line, "%S+") do" таки выдирает слова.
крайний LTS Netboot, awesomeWM, urxvtd, firefox, vim/gvim, mpv/smplayer, linux-lowlatency, jack, guitarix, lmms, ardour, mednafen, dsda-doom

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Кириллица, lua, и разбиение на слова
« Ответ #3 : 07 Марта 2013, 10:34:28 »
... кодировка UTF-8, в которой кириллические символы занимают два байта (а ascii - основные латинские - один байт, поэтому с ними все нормально)...

Кодировка с переменной длиной символа. И единственное что в ней оговаривается что она обратно совместима с ASCII. Полагаться на то что остальные символы будут двубайтными - копать себе яму.

 

Страница сгенерирована за 0.105 секунд. Запросов: 25.