Перейти к содержимому
  • 0
RccHD

Получение символа unicode по его номеру

Вопрос

Почему не выводится символ?

x = "▀"
print(x) -- печатает "▀"


-- получаем 3 байта символа "▀"
b1, b2, b3 = x:byte(1, -1)

-- получаем позицию символа по трем байтам
num = b1 * 0x10000 + b2 * 0x100 + b3

print(unicode.char(num)) -- печатает "?", а должно "▀"
-- для большинства других символов все работает правильно
Изменено пользователем RccHD

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

Потому что код UTF-8 преобразуется в код, собственно, символа иным путём.

Мда, зря я все еще на Lua 5.2 сижу

Тут нет встроенной либы uf8

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Юзай либу unicode, чтобы отрезать от строки нужное количество юникод-символов.

Если же хочешь из трёх байтов слепить строку назад, есть string.char.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...