Модуль iconv
Модуль iconv предоставляет метод конвертации строки с одним типом
кодировки в строку с другим типом кодировки, например из ASCII в UTF-8.
Он основывается на процедурах с iconv в POSIX.
Точный список доступных кодировок зависит от окружения. Как правило, в
список входят ASCII, BIG5, KOI8R, LATIN8, MS-GREEK, SJIS и около 100
других. Чтобы увидеть общий список, введите команду iconv --list в
терминале.
Ниже приведен перечень всех функций модуля iconv.
Имя | Назначение |
|---|---|
Создание экземпляра iconv | |
Преобразование строки |
Создание нового iconv-экземпляра.
Параметры:
to(string) — имя кодировки, в которую будет выполнено преобразованиеfrom(string) — имя кодировки, из которой будет выполнено преобразование
Возвращает
новый экземпляр iconv – фактически вызываемая функция
Тип возвращаемого значения
userdata
Если значение одного из параметров представляет собой недопустимое имя, появится сообщение об ошибке.
Пример:
tarantool> converter = require('iconv').new('UTF8', 'ASCII')---...
Преобразование.
Параметры:
input-string(string) — строка для преобразования (исходная строка)
Возвращает
строка, полученная в результате преобразования (целевая строка)
Если что-либо в строке input-string нельзя преобразовать, появится сообщение об ошибке, строка останется неизменной.
Пример:
Как известно, кодовая точка Unicode для символа «Д» (CYRILLIC CAPITAL LETTER DE) в шестнадцатеричном виде равна 0414 согласно базе данных символов Unicode. Следовательно, именно так она будет выглядеть в UTF-16. Tarantool обычно использует набор символов UTF-8. Создадим преобразователь из UTF-8 в UTF-16, используем string.hex('Д'), чтобы показать, как выглядит кодировка символа «Д» в исходной строке UTF-8, и string.hex('Д'-после-преобразования), чтобы показать, как она выглядит в целевой строке UTF-16. Поскольку результат равен 0414, можно убедиться, что преобразование iconv работает. (В различных реализациях iconv могут использоваться разные имена, например UTF-16BE вместо UTF16BE.)
tarantool> string.hex('Д')---- d094...tarantool> converter = require('iconv').new('UTF16BE', 'UTF8')---...tarantool> utf16_string = converter('Д')---...tarantool> string.hex(utf16_string)---- '0414'...