<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>47189</bug_id>
          
          <creation_ts>2023-08-10 14:31:43 +0300</creation_ts>
          <short_desc>Команда &quot;natspec -a&quot; работает противоположно ожидаемому</short_desc>
          <delta_ts>2023-08-12 14:28:45 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>libnatspec</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Artem Varaksa">varaksaaa</reporter>
          <assigned_to name="Vitaly Lipatov">lav</assigned_to>
          <cc>lav</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>231186</commentid>
    <comment_count>0</comment_count>
    <who name="Artem Varaksa">varaksaaa</who>
    <bug_when>2023-08-10 14:31:43 +0300</bug_when>
    <thetext>Описание ошибки
===============

Описание команды ($ natspec -a) (&quot;transliterate args from ENC to current encoding and print it&quot;) можно понимать как &quot;транслитерировать аргумент(ы) из предоставленной кодировки (ENC) в текущую кодировку и вывести его&quot;.

Это подтверждается и ошибкой, возникающей при запуске ($ natspec -a test тест):

&gt; Broken encoding: &apos;&apos; (to) or &apos;test&apos; (from) or UCS2. May be you forget setlocale in main or gconv-modules is missed?

Т. е. исходя из &quot;&apos;test&apos; (from)&quot; кодировка, указанная в аргументе `-a`, является исходной (from) кодировкой. Целевой кодировкой (to) должна быть системная кодировка (UTF-8).

Однако команда, похоже, выполняет обратное действие (если это не так, следует уточнить описание команды в $ natspec -h).



Так, при выполнении ($ natspec -a koi8r &quot;тест&quot;) ожидается конвертация из KOI8-R в UTF-8, но на самом деле происходит обратное: 

&gt; Clean charset &apos;UTF-8&apos;, after: &apos;UTF8&apos;get_entry_by_charset charset=UTF8
&gt; Find with charset &apos;UTF8&apos;
&gt; 1582519872 (ucs2: 0), тест:8
&gt; я┌п╣я│я┌

Соответственно, при выполнении ($ natspec -a koi8r &quot;я┌п╣я│я┌&quot;):

&gt; Clean charset &apos;UTF-8&apos;, after: &apos;UTF8&apos;get_entry_by_charset charset=UTF8
&gt; Find with charset &apos;UTF8&apos;
&gt; -987826624 (ucs2: 0), я┌п╣я│я┌:20
&gt; я▐Б■▄п©Б∙ёя▐Б■┌я▐Б■▄



Ожидаемый результат при выполнений последней команды - такой, который получается при выполнении ($ LANG=ru_RU.KOI8-R natspec -a utf8 &quot;я┌п╣я│я┌&quot;):

&gt; Clean charset &apos;KOI8-R&apos;, after: &apos;KOI8R&apos;get_entry_by_charset charset=KOI8R
&gt; Find with charset &apos;KOI8R&apos;
&gt; -2079856992 (ucs2: 0), я┌п╣я│я┌:20
&gt; тест


Примечание
==========

Примеры вывода предоставлены для версии libnatspec-0.3.1-alt3.x86_64 из задания 325550 с включённым DEBUG (в файле lib/natspec_internal.h &quot;#define DEBUG(n)&quot; заменено на &quot;#define DEBUG(n) n&quot;).

Основное поведение (не-DEBUG вывод) не отличается на указанных в разделе &quot;Воспроизводимость&quot; версиях.


Воспроизводимость
=================

Воспроизводится на виртуальных машинах:

[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</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231297</commentid>
    <comment_count>1</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2023-08-12 14:28:45 +0300</bug_when>
    <thetext>Нет, всё корректно работает:
$ LANG=C natspec -a UTF-8 &quot;Проверка связи&quot;
Proverka svyazi

Перекодирует из указанной кодировки в кодировку локали, транслитерируя при необходимости.

$ LANG=ru_RU.KOI8-R natspec -a UTF-8 &quot;Проверка связи&quot; | iconv -f koi8-r
Проверка связи


По сути предназначена для вывода строки в известной кодировке, даже если в целевую локаль перекодировать не удаётся.

$ LANG=en_US natspec -a &quot;UTF-8&quot; &quot;Проверка связи&quot;
Proverka svyazi

$ LANG=en_US natspec -a &quot;KOI8-R&quot; &quot;Проверка связи&quot;
p�ya-p+p+p+ya-p+p+ ya|p+yaRBp+p+</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>