clisp: кодирование и декодирование наборов символов без файлового ввода-вывода

Предположим, у меня есть байтовый вектор, содержащий данные, закодированные с использованием, скажем, utf-8 (хотя я не буду называть кодировку до времени выполнения). Как мне декодировать это в строку символов?

Один из способов — использовать #'ext:write-byte-sequence для вывода данных в файл, а затем развернуться и открыть файл с кодировкой :external-format:utf-8. Но есть ли способ сделать это без скретч-файла?

ИЗМЕНИТЬ 204-03-25 21:48:00 UTC

Согласно древнему торжественному обычаю, настоящим я плачу sds one zorkmid


person Bill Evans at Mariposa    schedule 25.03.2014    source источник


Ответы (1)


31.5.7. Преобразование между строками и байтовыми векторами

Кодировки также можно использовать для прямого преобразования между строками и их соответствующим представлением вектора байтов в соответствии с этой кодировкой.

(EXT:CONVERT-STRING-FROM-BYTES vector encoding &KEY :START :END)

преобразует подпоследовательность вектора (a (VECTOR (UNSIGNED-BYTE 8))) от начала до конца в STRING в соответствии с заданной кодировкой и возвращает результирующую строку.

(EXT:CONVERT-STRING-TO-BYTES string encoding &KEY :START :END)

преобразует подпоследовательность строки от начала до конца в (VECTOR (UNSIGNED-BYTE 8)) в соответствии с заданной кодировкой и возвращает результирующий вектор байтов.

Теперь вы должны мне 1 зоркмид. :-)

person sds    schedule 25.03.2014
comment
Конечно, знаю. Это раздражительно. Я смотрел на этот документ до посинения, несколько раз переходя туда-сюда. Оплата была отредактирована в исходный вопрос. - person Bill Evans at Mariposa; 26.03.2014