Описание ошибки =============== Описание команды ($ natspec -a) ("transliterate args from ENC to current encoding and print it") можно понимать как "транслитерировать аргумент(ы) из предоставленной кодировки (ENC) в текущую кодировку и вывести его". Это подтверждается и ошибкой, возникающей при запуске ($ natspec -a test тест): > Broken encoding: '' (to) or 'test' (from) or UCS2. May be you forget setlocale in main or gconv-modules is missed? Т. е. исходя из "'test' (from)" кодировка, указанная в аргументе `-a`, является исходной (from) кодировкой. Целевой кодировкой (to) должна быть системная кодировка (UTF-8). Однако команда, похоже, выполняет обратное действие (если это не так, следует уточнить описание команды в $ natspec -h). Так, при выполнении ($ natspec -a koi8r "тест") ожидается конвертация из KOI8-R в UTF-8, но на самом деле происходит обратное: > Clean charset 'UTF-8', after: 'UTF8'get_entry_by_charset charset=UTF8 > Find with charset 'UTF8' > 1582519872 (ucs2: 0), тест:8 > я┌п╣я│я┌ Соответственно, при выполнении ($ natspec -a koi8r "я┌п╣я│я┌"): > Clean charset 'UTF-8', after: 'UTF8'get_entry_by_charset charset=UTF8 > Find with charset 'UTF8' > -987826624 (ucs2: 0), я┌п╣я│я┌:20 > я▐Б■▄п©Б∙ёя▐Б■┌я▐Б■▄ Ожидаемый результат при выполнений последней команды - такой, который получается при выполнении ($ LANG=ru_RU.KOI8-R natspec -a utf8 "я┌п╣я│я┌"): > Clean charset 'KOI8-R', after: 'KOI8R'get_entry_by_charset charset=KOI8R > Find with charset 'KOI8R' > -2079856992 (ucs2: 0), я┌п╣я│я┌:20 > тест Примечание ========== Примеры вывода предоставлены для версии libnatspec-0.3.1-alt3.x86_64 из задания 325550 с включённым DEBUG (в файле lib/natspec_internal.h "#define DEBUG(n)" заменено на "#define DEBUG(n) n"). Основное поведение (не-DEBUG вывод) не отличается на указанных в разделе "Воспроизводимость" версиях. Воспроизводимость ================= Воспроизводится на виртуальных машинах: [p10] libnatspec-0.3.1-alt2.x86_64 kworkstation-10.1-x86-64 education-10.1-x86-64 education-10.1-x86-64-kde workstation-10.1-x86-64 server-10.1-x86-64 [sisyphus] libnatspec-0.3.2-alt1.x86_64 kworkstation-10.1-x86-64 education-10.1-x86-64 education-10.1-x86-64-kde workstation-10.1-x86-64 server-10.1-x86-64
Нет, всё корректно работает: $ LANG=C natspec -a UTF-8 "Проверка связи" Proverka svyazi Перекодирует из указанной кодировки в кодировку локали, транслитерируя при необходимости. $ LANG=ru_RU.KOI8-R natspec -a UTF-8 "Проверка связи" | iconv -f koi8-r Проверка связи По сути предназначена для вывода строки в известной кодировке, даже если в целевую локаль перекодировать не удаётся. $ LANG=en_US natspec -a "UTF-8" "Проверка связи" Proverka svyazi $ LANG=en_US natspec -a "KOI8-R" "Проверка связи" p�ya-p+p+p+ya-p+p+ ya|p+yaRBp+p+