LINUX.ORG.RU

Русская альтернатива UTF-8


0

0

Здравия!

Есть идея изменить маленько UTF-8 чтобы русские буквы помещались в байт. Мне это надо самому для написания форума, ну и вот думаю,может еще кому пригодится...

Идея простая. То же что и UTF-8, но флаг помещается не в 8-й бит байта, а с 7 байт в отдельном, восьмом байте, составляя 64-битный блок.

Кроме того, 64-й бит по умолчанию выставляется в 1, таким образом значение 0x00 остается прежним - конец строки, и вся кодировка полностью совместима с библиотекой stdio.h, которую я очень люблю...

Далее, если 64-й бит все же 0, то это трактуется так: вся строка написана в кодировке ASCII.

Самое интересное что в первый байт можно поместить Русские буквы. Мне для моих целей нужна Кириллица, строчные буквы Глаголицы. Еще место останется для Греческого (используется в физике и математике), и возможно даже Футарк - для любителей RPG игр.

Если кому идея нравится, я сделаю сайт для дискуссии/публикации стан- дарта и имплементаций...

Успехов!

>Есть идея изменить маленько UTF-8 чтобы русские буквы помещались в байт. Мне это надо самому для написания форума, ну и вот думаю,может еще кому пригодится...

Забавно. А английские в два. Чем тебе koi8-r не нравится? Или хочется сделать ШЕСТУЮ русскую кодировку?

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

какие велосипеды? Покажи мне хоть едину уникодовую кодировку в которой русские и английские буквы вмещались бы в менее чем два байта.

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

>какие велосипеды? Покажи мне хоть едину уникодовую кодировку в которой русские и английские буквы вмещались бы в менее чем два байта.

А греки захотят, чтобы там были английские и греческие, евреи - аналогично и т. д. И где тут тогда единая кодировка?

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

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

svyatozar ★★
() автор топика

да на кол за такое надо!
бля мало cp1251, koi8, utf? бардака мало?
кодировка должна быть одна. и такое понятие как "кодировка" вообще исчезнет.

Muromec ☆☆
()

Господа, может хватит а?
Кодировок итак дофига UTF уже все покрыл,
ненадо больше!

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

Не надо кричать, как индюк на сковородке. Не нужна так не нужна - закроем тему. Я ее для своих целей делаю.

Я уже говорил, UTF мне не подходит, она тратит 2 байта на каждую Русскую букву.

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

Да нет, я думаю, что он имел в виду, что может, чтоб не плодить кодировки либу сделать, которая конвертнет все что надо в тот 
формат, потом обратно (после обработки прогой).

Если подумать, то звездануться можно будет скоро от них =)

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

>какие велосипеды? Покажи мне хоть едину уникодовую кодировку в которой русские и английские буквы вмещались бы в менее чем два байта.

Она поэтому и юникодная, что не надо вмещаться в один байт - каждая буква вмещается в два и этого достаточно для основной массы языков.

jackill ★★★★★
()

> Мне это надо самому для написания форума,

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

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

anonymous
()
Ответ на: комментарий от jackill

Его к нам на Украину - у нас кодировок больше всех! Одной кодировкой больше... одной меньше ... :)

PS

Без связей в комитетах по стандартизации на тебя все будут забивать.

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

Комитеты по стандартизации находятся в Штатах, а американцы довольно презрительно относятся ко всему Русскому. Большинство из американцев довольны ASCII, так что, перейдем на транслитерацию? или еще лучше: на английский язык? Нафиг вообще париться с языками?

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

Ну почему же им наплевать на русский. Они свою кодировку, та которая iso*5, тоже нам пихали. Только ее никто не использовал. )))

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

Да ладно, если будет лучше, только поддержим!

?!
Неужто я не прав?

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

А можно меня?
В Ирландию приглашали - отказался (обстоятельства),

ЗЫ
Наверное, пошутил, т.к. и ща откажусь, к счастью, они не изменились =)

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

>Я уже говорил, UTF мне не подходит, она тратит 2 байта на каждую Русскую букву.

А почему не сделать форум в koi8-r или в cp1251?

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

>Harliff >А почему не сделать форум в koi8-r или в cp1251?

На форуме будут выкладываться тексты на Старословенском...

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

Я конечно не знаток древних алфавитов (не встречал глазками), но там-же только Ъ (ять) добавляется? Имхо твердый знак с ней справится =)

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

Я не совсем понимаю, вы собираетесь еще и своего клиента писать? Ведь ни один браузер о вашей кодировке знать не будет и никто не сможет на форуме ничего написать и прочитать. Попробуйте поискать среди имеющихся подходящую вам, наверняка она существует в UTF8.

kenneth ★★★
()

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

Переключение языка, по идее, довольно редкая операция, поэтому 99% текста получится в однобайтной кодировке.

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

Извинияюсь - коря-во как-то все описал. В общем, смысл в введении однобайтного переключателя языка.

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

Полная Кириллица содержит 49 букв...

Вывод будет статический, в кодировке UTF-8, так что на клиенте это никак не отразится. То есть будут лежать .html файлы. Они займут много места, но их не надо бакапить...

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

Есть и другой способ, исключающий необходимость 64-битного выравнивания. Он гораздо проще и заключается в модификации ASCII-части UTF8. В ней если немного подвинуть некоторые устаревшие символы, такие как 'device control 1-4' оставить из непечатаемых только 0, TAB, LF, CR и ESC, а так же выбросить заглавные буквы. Ввести новый непечатаемый символ 'shift', сигнализирующий что следующая буква заглавная. При сортировке shift можно легко игнорировать, таким образом упрощается сортировка. У меня уже есть макет кодовой таблицы. Кому интересно - вышлю на мыло.

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

К чему всё это?

Только для сохранения места? Не проще ли использовать компрессию?

Кстати ты непоследователен, не хочешь использовать однобайтовый переключатель языка, но тут же вводишь однобайтовый переключатель регистра, и всё потому, что в конкретном твоём приложении СЕГОДНЯ так удобнее. Завтра твои задачи изменяться, и как ты будешь бороться со своей самопальной кодировкой, не предназначенной для сортировки с учётом регистра?

Формат данных нужно использовать по возможности более общий. Если нужно сократить размер и ускорить сортировку - то и решай именно эти задачи (только сначала убедись, что это действительно является проблемой), а не создавай себе ненужных проблем.

P.S. "русский" пишется с маленькой буквы. Это я тебе говорю как русский человек, который не любит когда его родной язык коверкают ненужными прописными буквами.

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