Ошибки cut -c для русских символов

думаю стоит вместо cut использовать что то другое.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
Выяснилась одна дедаль:
[[email protected] lib]$ sed -n "2p" and.ch | cut -c 10-11
х
[[email protected] lib]$ sed -n "2p" and.ch | wc
1 5 20
[[email protected] lib]$



Получается,что русские символы кодируются не 8 бит, а 16... Т.е. один русский символ - это ДВА системных символа (в кодировке UTF-8).
Самое непонятное, что на Солярисе такой проблемы не возникает...
nafanja
думаю стоит вместо cut использовать что то другое.
Что например?
Anton8830, lampslave дал ссылку, что это давний баг в cut. Для решения можно использовать awk:
awk '{print substr($0,2,length)}'
GitHub, ArchWiki, AUR
Открыли Америку... :) В utf-8 латиница кодируется одним байтом, а кириллица, иероглифы и прочее - двумя.

P.S. для кода на форуме предусмотрен специальный тег.
Kycok
Anton8830, lampslave дал ссылку, что это давний баг в cut. Для решения можно использовать awk:
awk '{print substr($0,2,length)}'
Это баг не cut, а кодировки... Как может один печатный символ, грубо говоря, занимать 2 символа в кодировке? И как его нормальным способом отловить?
lampslave
Открыли Америку... :) В utf-8 латиница кодируется одним байтом, а кириллица, иероглифы и прочее - двумя.

P.S. для кода на форуме предусмотрен специальный тег.
Для меня да... Печально... Обламывает половину работы...
Anton8830
Это баг не cut, а кодировки... Как может один печатный символ, грубо говоря, занимать 2 символа в кодировке?
Вот жалко смайликов нет... Ну перекодируйте всё в utf-16, там любой символ два байта занимает :)
Anton8830
Это баг не cut, а кодировки... Как может один печатный символ, грубо говоря, занимать 2 символа в кодировке?
путаешь не 2 символа, а 2 байта.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
Anton8830
Это баг не cut, а кодировки... Как может один печатный символ, грубо говоря, занимать 2 символа в кодировке?
путаешь не 2 символа, а 2 байта.
Да, спасибо... Просто опечалился... :-(
lampslave
Anton8830
Это баг не cut, а кодировки... Как может один печатный символ, грубо говоря, занимать 2 символа в кодировке?
Вот жалко смайликов нет... Ну перекодируйте всё в utf-16, там любой символ два байта занимает :)
Встречный вопрос: Я меняю локаль в /etc/locale.gen, запускаю locale-gen и меняю локаль в locale.conf. Это всё?
Вопрос, что будет с файлами, которые уже есть в системе?
 
Зарегистрироваться или войдите чтобы оставить сообщение.