Да, "строк lua" не существует, это просто байты которые ты интерпретируешь как тебе нужно, они уже имеют какую-то кодировку, в зависимости от содержимого файла который ты прочитал, или кодировки скрипта или ещё чего. Скажем так, кодировка есть у любого текста.
В третьих, зачем? Возможно есть более простые пути. utf16 активно используется в виндовсе, но там есть и utf8-варианты функций, можно вызывать их и не париться с кодировками, используя стандартный utf8.
при перекодировки в utf16 через iconv пришла вообще хрень делал вот так: local convert = iconviconv.new('UTF-16LE', 'UTF-8') convert:iconv("текст сообщения")