<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Как выдрать из UTF-8 текста указанное количество символов</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID15/4553.html</link>
    <description>Здравствуйте!&lt;br&gt;&lt;br&gt;У меня такая задача возникла. Есть файл текстовый, в UTF-8. &lt;br&gt;И я хочу из него вывести произвольный кусок текста. Т.е. если в файле N символов (не байт!), я хочу получить функцию substr(txt, K, M), где K&amp;lt;M&amp;lt;=N&lt;br&gt;&lt;br&gt;Всё это хочу сделать в консоли. Пробовал cut, он естественно не работает, т.к. cut -cK-M  конечно считаем байтами. А у меня utf-8.&lt;br&gt;&lt;br&gt;Есть ли возможность получить результат как cut но для символов, а не байт?&lt;br&gt;Желательно не внешними утилитами а из стандартного набора.&lt;br&gt;&lt;br&gt;Спасибо!&lt;br&gt;</description>

<item>
    <title>Как выдрать из UTF-8 текста указанное количество символов (ыы)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID15/4553.html#10</link>
    <pubDate>Sat, 07 Dec 2019 17:44:38 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; user$ cat ~/text.utf8 &lt;br&gt;&amp;gt; 1234абвгд &lt;br&gt;&amp;gt; user$ cut -c5-7 ~/text.utf8 &lt;br&gt;&amp;gt; абв &lt;br&gt;&amp;gt; jail# cut -c5-7 /root/text.utf8 &lt;br&gt;&amp;gt; а&amp;#65533; &lt;br&gt;&amp;gt; Ну и кроме этого ещё не подходит принципиально cut как инструмент для &lt;br&gt;&amp;gt; этого, т.к. он для каждой строки берёт этот диапазон, а мне &lt;br&gt;&amp;gt; надо имея текстовый файл получить его отгрызок от такого-то символа до &lt;br&gt;&amp;gt; такого-то.&lt;br&gt;&lt;br&gt;устанавливайте локаль прямо в скрипте.&lt;br&gt;</description>
</item>

<item>
    <title>Как выдрать из UTF-8 текста указанное количество символов (anon1999)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID15/4553.html#9</link>
    <pubDate>Sat, 07 Dec 2019 11:56:33 GMT</pubDate>
    <description>&amp;gt;&amp;gt; - UTF-32 - возможно её стоит посмотреть.&lt;br&gt;&amp;gt; Да, похоже это выход!&lt;br&gt;&amp;gt; Итого значит: &lt;br&gt;&amp;gt; iconv -f UTF-8 -t UTF-32 original.text &amp;#124; head -n END_POS*4 &amp;#124; tail &lt;br&gt;&amp;gt; -n LEN*4 &amp;#124; iconv -f UTF-32 -t UTF-8 &lt;br&gt;&amp;gt; Спасибо!&lt;br&gt;&lt;br&gt;Пожалуйста :)&lt;br&gt;</description>
</item>

<item>
    <title>Как выдрать из UTF-8 текста указанное количество символов (DHCPep)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID15/4553.html#8</link>
    <pubDate>Sat, 07 Dec 2019 09:34:32 GMT</pubDate>
    <description>&amp;gt; iconv -f UTF-8 -t UTF-32 original.text &amp;#124; head -n END_POS*4 &amp;#124; tail &lt;br&gt;&amp;gt; -n LEN*4 &amp;#124; iconv -f UTF-32 -t UTF-8 &lt;br&gt;&lt;br&gt;-c флаг там конечно же.&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Как выдрать из UTF-8 текста указанное количество символов (DHCPep)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID15/4553.html#7</link>
    <pubDate>Sat, 07 Dec 2019 09:26:59 GMT</pubDate>
    <description>&amp;gt; - UTF-32 - возможно её стоит посмотреть.&lt;br&gt;&lt;br&gt;Да, похоже это выход!&lt;br&gt;&lt;br&gt;Итого значит:&lt;br&gt;iconv -f UTF-8 -t UTF-32 original.text &amp;#124; head -n END_POS*4 &amp;#124; tail -n LEN*4 &amp;#124; iconv -f UTF-32 -t UTF-8&lt;br&gt;&lt;br&gt;Спасибо!&lt;br&gt;</description>
</item>

<item>
    <title>Как выдрать из UTF-8 текста указанное количество символов (DHCPep)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID15/4553.html#6</link>
    <pubDate>Sat, 07 Dec 2019 09:20:51 GMT</pubDate>
    <description>&amp;gt; Что не так то?&lt;br&gt;&lt;br&gt;Проверил, действительно с utf-8 работает cut успешно, но это зависит от настроенной локали пользователя который запускает.&lt;br&gt;Я это когда проверил под своим юзером, от которого работаю на компе и у которого всё настроено - ок. А в принципе мне надо это решение для скрипта, и работает этот скрипт в джейле, там никаких локалей у пользователя не настроено и там он выдаёт если на начало двухбайтового символа не попадает, то  кракозябру.&lt;br&gt;user$ cat ~/text.utf8&lt;br&gt;1234абвгд&lt;br&gt;&lt;br&gt;user$ cut -c5-7 ~/text.utf8&lt;br&gt;абв&lt;br&gt;&lt;br&gt;jail# cut -c5-7 /root/text.utf8&lt;br&gt;а&amp;#65533;&lt;br&gt;&lt;br&gt;Ну и кроме этого ещё не подходит принципиально cut как инструмент для этого, т.к. он для каждой строки берёт этот диапазон, а мне надо имея текстовый файл получить его отгрызок от такого-то символа до такого-то.&lt;br&gt;</description>
</item>

<item>
    <title>Как выдрать из UTF-8 текста указанное количество символов (Аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID15/4553.html#5</link>
    <pubDate>Fri, 06 Dec 2019 21:23:48 GMT</pubDate>
    <description>Чес слово, ничерта не понял.&lt;br&gt;В смысле cut -c не работает с utf8 правильно??? &lt;br&gt;&lt;br&gt;&#091;code&#093;&#091; diablopc&#064;d200 ~ &#093;$ cat utf8.text &lt;br&gt;абвгдежзилмнопрстуфхцчшщ&lt;br&gt;&lt;br&gt;&#091; diablopc&#064;d200 ~ &#093;$ cut -c5-8 utf8.text &lt;br&gt;дежз&#091;/code&#093;&lt;br&gt;&lt;br&gt;Что не так то?&lt;br&gt;</description>
</item>

<item>
    <title>Как выдрать из UTF-8 текста указанное количество символов (anon1999)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID15/4553.html#4</link>
    <pubDate>Fri, 06 Dec 2019 20:47:01 GMT</pubDate>
    <description>&amp;gt;&amp;gt; Может, сначала стоит перекодировать строку из UTF-8 в кодировку с фиксированной шириной &lt;br&gt;&amp;gt;&amp;gt; символа, &lt;br&gt;&amp;gt;&amp;gt; а потом выдирать оттуда подстроку?&lt;br&gt;&amp;gt; Или есть юникод с фиксированной шириной? Тогда да, было бы конвертировать в &lt;br&gt;&amp;gt; него, там выдрать N*2 (или 3) байт, затем перегнать обратно в &lt;br&gt;&amp;gt; обычный юникод.&lt;br&gt;&amp;gt; Но что за кодировка такая?&lt;br&gt;&lt;br&gt;Есть:&lt;br&gt;&lt;br&gt;- UTF-16 (правда там есть нюансы с &quot;суррогатными парами&quot; символов);&lt;br&gt;&lt;br&gt;- UTF-32 - возможно её стоит посмотреть.&lt;br&gt;</description>
</item>

<item>
    <title>Как выдрать из UTF-8 текста указанное количество символов (DHCPep)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID15/4553.html#3</link>
    <pubDate>Fri, 06 Dec 2019 20:34:46 GMT</pubDate>
    <description>&amp;gt; Может, сначала стоит перекодировать строку из UTF-8 в кодировку с фиксированной шириной &lt;br&gt;&amp;gt; символа, &lt;br&gt;&amp;gt; а потом выдирать оттуда подстроку?&lt;br&gt;&lt;br&gt;Или есть юникод с фиксированной шириной? Тогда да, было бы конвертировать в него, там выдрать N*2 (или 3) байт, затем перегнать обратно в обычный юникод.&lt;br&gt;&lt;br&gt;Но что за кодировка такая?&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Как выдрать из UTF-8 текста указанное количество символов (DHCPep)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID15/4553.html#2</link>
    <pubDate>Fri, 06 Dec 2019 20:33:01 GMT</pubDate>
    <description>&amp;gt; Может, сначала стоит перекодировать строку из UTF-8 в кодировку с фиксированной шириной &lt;br&gt;&amp;gt; символа, &lt;br&gt;&amp;gt; а потом выдирать оттуда подстроку?&lt;br&gt;&lt;br&gt;А как? Если например это текст &quot;война и мир&quot;, где есть и французский язык и русский?&lt;br&gt;</description>
</item>

</channel>
</rss>
