LINUX.ORG.RU
ФорумTalks

В июле этого года исполняется 26 лет стандарту KOI8-R

 


1

2

Сабж. Именно 26 лет назад, в июле 1993-его года, был создан RFC 1489.
За принятие RFC 1489 выступала Society of Unix User Groups (SUUG), поскольку кодировка KOI8-R уже была де-факто стандартом мира Unix на территории бывшего СССР.
Юникод уже существовал и RFC 1489 описывает соответствие кодов символов кодам уже принятого юникодного стандарта ISO 10646 для тех, кому юникод избыточен.

Стандарт KOI8-R до RFC 1489 никогда не публиковался, но основан на нескольких опубликованных стандартах: ГОСТ 19768-74 (старый КОИ8), ISO 6937/8 (не зарегистрирован) и вариациях - INIS-cyrillic и ISO 5427.

* * *

Ура! Поздравляю KOI8-R'щиков с очередным днём рождения стандарта самой лучшей кодировки!

★★★★★
Ответ на: комментарий от Shaman007

Знаю. Но зачем извращаться с этим дебилизмом, когда N'й символ в человеческих кодировках вычисляется как str[N*k], где k == 1 для однобайтных и 4 для хрюникода-32?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Знаю. Но зачем извращаться с этим дебилизмом, когда N'й символ в человеческих кодировках вычисляется как str[N*k], где k == 1 для однобайтных и 4 для хрюникода-32?

Не знаю, а зачем вы извращаетесь, работая с текстом на языке, который для этого не предназначен?

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

Я лучше возьму rust или Go

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

возьму библиотеку для работы со строками

и будешь страдать, да.

Вы и доказывайте

Зачем мне доказывать очевидное? Если мне моча в голову стукнет, и я захочу файл обозвать кириллицей, то его длина будет составлять до 255 символов. Слабо? =D

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от kirk_johnson

Что значит «не предназначен»? С - универсальный ЯП. В отличие от всяких быдлопхытонов. И на С я пишу все: от прошивок микроконтроллеров до серверных демонов и числодробилок. См. мой гитхаб.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

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

Ты не то чтобы авторитетная для меня личность в вопросах программирования, прости.

и будешь страдать, да.

Нет, не буду.

Зачем мне доказывать очевидное? Если мне моча в голову стукнет, и я захочу файл обозвать кириллицей, то его длина будет составлять до 255 символов. Слабо? =D

Опять какие-то восхитительные истории.

kirk_johnson ★☆
()
Ответ на: комментарий от Eddy_Em

Что значит «не предназначен»? С - универсальный ЯП. В отличие от всяких быдлопхытонов. И на С я пишу все: от прошивок микроконтроллеров до серверных демонов и числодробилок. См. мой гитхаб.

В демонах требуется работа с текстом? Жги ещё.

kirk_johnson ★☆
()
Ответ на: комментарий от Eddy_Em

А ты на божественной сишечке накатай простую программу, которая будет из текстового файла выбирать строки с N-го по M-й символ

А ты уже изготовил себе каменный нож, чтобы было чем лыко надрать на лапти?

gremlin_the_red ★★★★★
()
Ответ на: комментарий от kirk_johnson

Испугайся:

#include "str.h"
#include "usart.h"
/**
 * @brief cmpstr - the same as strncmp
 * @param s1,s2 - strings to compare
 * @param n - max symbols amount
 * @return 0 if strings equal or 1/-1
 */
int cmpstr(const char *s1, const char *s2, int n){
    int ret = 0;
    do{
        ret = *s1 - *s2;
    }while(*s1++ && *s2++ && --n);
    return ret;
}

/**
 * @brief getchr - analog of strchr
 * @param str - string to search
 * @param symbol - searching symbol
 * @return pointer to symbol found or NULL
 */
char *getchr(const char *str, char symbol){
    do{
        if(*str == symbol) return (char*)str;
    }while(*(++str));
    return NULL;
}
Это - для STM32. В демонах тоже используется работа с текстом: обработка GET/POST запросов, обработка команд, посланных через сокет или вебсокет.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от kirk_johnson

Пугаться чего? Собственных реализаций strncmp?

коммунизма однобайтных кодировок.

alwayslate ★★
()
Ответ на: комментарий от alwayslate

зачем?

Затем, что библиотечная функция вызывает выпадение чипа в хардфолт почему-то. Мне так проще.

не проще ли заюзать для этого inline asm?

Нафига оно нужно, когда на С понятней? Ассемблер нужен лишь, скажем, если я захочу порядок бит в uint32_t перевернуть, это одной ассемблерной инструкцией делается, либо если еще что-то ARM'овское заюзать, для чего в С нет готового.

Eddy_Em ☆☆☆☆☆
()

чувак тебя опять вскрыло! поздравляю.

alwayslate ★★
()
Ответ на: комментарий от Eddy_Em

Алсо «распарсить строчку с командой» это не «работа с текстом». Потому что строчка с командой у тебя в ASCII/UTF-8, и проблем с этим у тебя нет.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от kirk_johnson

Откуда мы знаем, может быть, у него на STM32 полнотекстовый поиск.

Shaman007 ★★★★★
()
Ответ на: комментарий от kirk_johnson

значит, «работа с текстом» в твоём понимании это не просто байтики последовательно пердолить, а нужен обязательно сложный матан?

Harald ★★★★★
()
Ответ на: комментарий от Harald

Переводчик работает с текстом. Писатель работает с текстом. Дата-сайнтист - тоже работает с текстом. Все по-разному. Никого из них особенно не трогает сколько байт в кодировке.

Shaman007 ★★★★★
()
Ответ на: комментарий от Harald

Нужна работа с текстом, лол. Редактирование текста в vscode, vim или ed, на худой конец. В котором могу быть части на разных языках, и над которым нужно совершать нетривиальные задачи. А парсинг фиксирванной ASCII строки с заданным форматом это не «работа с текстом» :)

kirk_johnson ★☆
()
Ответ на: комментарий от Harald

Если он не пишет собственную библиотеку для работы со строками, а пользуется готовой, то не трогает.

Shaman007 ★★★★★
()
Ответ на: комментарий от Harald

А программист на С работает с текстом и сколько байт в кодировке его очень даже трогает

Чо, правда? Вот смотри, у нас есть GET/POST запрос. Нам важна ТОЛЬКО та часть, которая использует ASCII (потому что нам плевать на содержимое, мы его рассматриваем как бинарный блоб). И это без учета того, что можно просто взять готовые строковые либы и не насиловать себе мозг.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

Если мне моча в голову стукнет

Да она уже. А может чего и посильнее.

для гомосеков

У тебя богатый опыт

Deleted
()
Ответ на: комментарий от kirk_johnson

А что тогда по-твоему «работа с текстом», если не тупой парсинг и поиск подстрок? Что там может быть еще эдакого?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

А что тогда по-твоему «работа с текстом», если не тупой парсинг и поиск подстрок? Что там может быть еще эдакого?

Ну лол же.

kirk_johnson ★☆
()
Ответ на: комментарий от Eddy_Em

И где в этих задачах встаёт практическая проблема в случае, когда число символов не равно числу байт? Не взятых с потолка и не таких, где переизобретается sed.

WDWTFWW
()
Ответ на: комментарий от Eddy_Em

из текстового файла выбирать строки с N-го по M-й символ

Это не сложно. Я так делал. Стандарт юникода для этого читать не нужно. Достаточно 2й таблички на https://ru.wikipedia.org/wiki/UTF-8

sergej ★★★★★
()

Хотел пошутить про мертвечину

…но сдержался.

theNamelessOne ★★★★★
()
Ответ на: комментарий от WDWTFWW

И где в этих задачах встаёт практическая проблема в случае, когда число символов не равно числу байт?

В этом случае N'й символ нельзя вычислить как str[N], очевидно же!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

из текстового файла выбирать строки с N-го по M-й символ

Как хорошо жить в мире, в котором символ - это что-то целое и неделимое. Жаль в нашем мире нужно думать про графемы и прочие прелести реальной типографии.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Ну, тебе делать нехрен - вот и думай. Я лучше о логике программы думать буду, а не о том, сколько байт символ занимает! Графемы же вообще возникают лишь в готовых печатных pdf'ках, которые парсить не нужно.

Хрюникоду есть место лишь в pdf и прочей гуйне, но мне нет дела до того, как латех мой файл конвертирует в pdf. Лишь бы результат был. А исходники, ясен пень, в кои8.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

А ты на божественной сишечке накатай простую программу, которая будет из текстового файла выбирать строки с N-го по M-й символ. Посмотрю, как запоешь!

А зачем тут Си, если есть божественный awk?

$ awk '{print substr($0,N,M)}' /path/to/file
Deleted
()
Ответ на: комментарий от Eddy_Em

а не о том, сколько байт символ занимает

Всё уже сделано за вас.

Графемы же вообще возникают лишь в готовых печатных pdf'ках, которые парсить не нужно.

Шта?! Может вы с лигатурами путаете?

Хрюникоду есть место лишь в pdf и прочей гуйне

То есть везде. Так и запишем.

А исходники, ясен пень, в кои8.

Ну если весь текст ровно на одном языке - то всё ок. Жаль с реальным миром это никак не стыкуется.

RazrFalcon ★★★★★
()
Последнее исправление: RazrFalcon (всего исправлений: 1)
Ответ на: комментарий от kirk_johnson

А парсинг фиксирванной ASCII строки с заданным форматом это не «работа с текстом» :)

Да в парсинге вообще редко когда нужен рандомный доступ к символу в строке, а на остальных задачах явное преимущество по скорости кодировок с фиксированной длиной теряется.

theNamelessOne ★★★★★
()
Ответ на: комментарий от RazrFalcon

Ну если весь текст ровно на одном языке - то всё ок. Жаль с реальным миром это никак не стыкуется.

Мне насрать, что у тебя в «реальном мире», но обычно человек кроме родного и английского редко знает другие языки. А чтобы верстать мультиязычную книжку, не нужен хрюникод: всякие умляуты можно теховскими команднами добавить, ведь пишу же я букву «йо», не имея ее на клавиатуре!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Это-то очевидно.

Вот не особо очевидно, где может быть нужно явно заданное смещение в символах, а не байтах. В редакторах - вероятно, а в распознаваемом тексте - сомнительно. Либо парсим чужие данные, тогда там может быть любая кодировка и вообще что угодно, либо парсим свои и тогда можем сами себе упростить жизнь, явно определившись с байтами или символами (собственно, вроде все текстовые протоколы для служебных токенов используют только ASCII).

WDWTFWW
()
Ответ на: комментарий от theNamelessOne

Да уж.. Сравни сортировку в кодировке CP866 или даже хрю-32 с сортировкой в хрю-8! В первом случае символы идут последовательно и сравнивать можно тупым (a-b), во втором же случае нужно сначала получить численные значения a и b!!!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от WDWTFWW

где может быть нужно явно заданное смещение в символах, а не байтах

Например, автоматический пейджер, который аккуратно разбивает текст на строки длиной N символов, чтобы не было разрывов слов.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

А что тогда по-твоему «работа с текстом», если не тупой парсинг и поиск подстрок?

Поиск подстрок в UTF-8 ничем не отличается от поиска подстрок в кодировках с фиксированной длиной, алё. Ты просто ищешь вхождения массива байт в массиве байт. Ты можешь даже использовать для этого strstr.

theNamelessOne ★★★★★
()
Ответ на: комментарий от Eddy_Em

Зачем тебе сортировка при парсинге?

При этом для сортировки тоже не нужен произвольный доступ, значит, ощутимой разницы в производительности в реальных программах ты не заметишь.

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

Мне насрать, что у тебя в «реальном мире», но обычно человек кроме родного и английского редко знает другие языки. А чтобы верстать мультиязычную книжку, не нужен хрюникод: всякие умляуты можно теховскими команднами добавить, ведь пишу же я букву «йо», не имея ее на клавиатуре!

То есть абзац на французском или латинском (для цитирования, например) ты предлагаешь пердолить теховскими командами? Ох лол.

kirk_johnson ★☆
()
Ответ на: комментарий от Eddy_Em

Это как-то уже ближе к редакторам и прочей «человеческой» работе с текстом.

А вообще отличный такой пейджер, который сломается на конфигурации, отличной от конфигурации разработчика. Почти на уровне планировщика (для напоминаний и прочих дней рождений, а не cron), который не знает о часовых поясах.

WDWTFWW
()
Ответ на: комментарий от ptarh

Кодировки plaintext - utf8, или utf8, а может еще и utf8. Больше ничего пользователю знать не нужно.

Ты про UTF-8 забыл.

hateyoufeel ★★★★★
()
Ответ на: комментарий от Eddy_Em

А ты на божественной сишечке накатай простую программу, которая будет из текстового файла выбирать строки с N-го по M-й символ. Посмотрю, как запоешь!

Ну так C говно, раз для него нет нормальных библиотек для работы с юникодом.

hateyoufeel ★★★★★
()

К слову, веб-версия MS Outlook до сих пор для русского языка по дефолту использует KOI8-R. MS — главный союзник фанатов однобайтового шлака! Так победим!

P.S. saahriktu, вот скажи, чем KOI8-R лучше ISO-8859-5? Последняя — стандарт ISO и вообще труЪ.

hateyoufeel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.