LINUX.ORG.RU
ФорумAdmin

strings -e l в поиске кириллицы в UTF-16LE

 , , ,


0

1

Есть файл следующего содержания:

Русский
English
mixed_символы

Если перевести его в UTF-16LE iconv -f UTF-8 -t UTF-16LE file.txt > file16.txt, то strings -e l file16.txt выдаст:

English
mixed_

А ожидалось, что выдаст весь файл (как выдаёт strings -e S file.txt). ЧЯДНТ? Файл выше приведён для примера.

Судя по коду strings, он полагается на функцию isprint() из ctype.h. А эта функция полагается на локаль, и 16-битной локали у Линукса нет. Поэтому вряд ли возможно, что в текущем виде при работе с 16-битными и 32-битными кодировками будут показываться символы не из ASCII.

gedisdone ★★★ ()

Можешь попробовать добавить новую/сгенерировать локаль и прописать её перед вызовом strings

anonymous ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей