Здравствуйте, Аноним, Вы писали:
А>Требуется написать на С функции, выволняющие указанные в заголовке преобразования. А>Как это вообще делается? Куда копать?
Важны следующие строки
0x00000000 — 0x0000007F | 0xxxxxxx
0x00000080 — 0x000007FF | 110xxxxx 10xxxxxx
Строим таблицу соответствия кодов cp1251 и utf8.
Символы 0x00-0x7f переходят без изменений в код utf8. Эту часть не включаем в эту таблицу.
Символы 0x7f-0xff -> 110xxxxx 10xxxxxx. Для этой части строим таблицу соответствия. Биты для иксов выравниваются по правому краю, то есть сперва забивается второй байт а остаток в левый.
Здравствуйте, kaa.python, Вы писали:
А>>Требуется написать на С функции, выволняющие указанные в заголовке преобразования. А>>Как это вообще делается? Куда копать?
KP>В сторону исходинков приложения iconv
Даже не надо исходники приложения, достаточно интерфейс библиотеки libiconv. Или Qt. Или ICU.
Кроме того, обратную функцию реализовывать не нужно. Текст, однажды спасённый из кодировки прошлого века, не должен возвращаться обратно.
Здравствуйте, Аноним, Вы писали:
А>Требуется написать на С функции, выволняющие указанные в заголовке преобразования. А>Как это вообще делается? Куда копать?
Вопрос из серии как превратить тёплое в мягкое.
windows1251 — кодировка символов
utf-8 — способ хранения многобайтных символов
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
А>>Требуется написать на С функции, выволняющие указанные в заголовке преобразования. А>>Как это вообще делается? Куда копать? V>Вопрос из серии как превратить тёплое в мягкое. V>windows1251 — кодировка символов V>utf-8 — способ хранения многобайтных символов
ох уж эти мне теоретики... а вот педивикия говорит, что и то, и то — кодировка, опять врёт, чертовка?
ну и вот тебе самая что ни на есть практическая задача. скачал я, скажем, сериал с русскими субтитрами, файлы с субтитрами оказались в виндовой кодировке, а плеер понимает только utf-8. как тогда по-твоему назвать процесс приведения субтитров из исходного состояния к "способу хранения многобайтных символов"?
Здравствуйте, Vain, Вы писали:
V> А>Требуется написать на С функции, выволняющие указанные в заголовке преобразования. V> А>Как это вообще делается? Куда копать?
V> Вопрос из серии как превратить тёплое в мягкое. V> windows1251 — кодировка символов V> utf-8 — способ хранения многобайтных символов
И то и другое — кодировки. Просто 1251 охватывает ограниченное количество символов (кодпоинтов) юникода, а utf-8 все.
Здравствуйте, BulatZiganshin, Вы писали:
V>>windows1251 — кодировка символов V>>utf-8 — способ хранения многобайтных символов BZ>кодировка = способ хранения
названа конкретная кодировка, поэтому нет
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, const_volatile, Вы писали:
А>>>Требуется написать на С функции, выволняющие указанные в заголовке преобразования. А>>>Как это вообще делается? Куда копать? V>>Вопрос из серии как превратить тёплое в мягкое. V>>windows1251 — кодировка символов V>>utf-8 — способ хранения многобайтных символов _>ох уж эти мне теоретики... а вот педивикия говорит, что и то, и то — кодировка, опять врёт, чертовка?
врёт
_>ну и вот тебе самая что ни на есть практическая задача. скачал я, скажем, сериал с русскими субтитрами, файлы с субтитрами оказались в виндовой кодировке, а плеер понимает только utf-8. как тогда по-твоему назвать процесс приведения субтитров из исходного состояния к "способу хранения многобайтных символов"?
да хоть с китайскими субтитрами, кодировка языка к utf-8 не имеет ни мальнейшего отношения
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, hattab, Вы писали:
V>> А>Требуется написать на С функции, выволняющие указанные в заголовке преобразования. V>> А>Как это вообще делается? Куда копать? V>> Вопрос из серии как превратить тёплое в мягкое. V>> windows1251 — кодировка символов V>> utf-8 — способ хранения многобайтных символов H>И то и другое — кодировки. Просто 1251 охватывает ограниченное количество символов (кодпоинтов) юникода, а utf-8 все.
Не надо заблуждаться, 1251 показывает отображение кодов на символы, utf-8 ничего такого не показывает
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
V>>>windows1251 — кодировка символов V>>>utf-8 — способ хранения многобайтных символов BZ>>кодировка = способ хранения V>названа конкретная кодировка, поэтому нет
разница между ними — в том, что cp1251 поддерживает только подмножество unicode
Здравствуйте, BulatZiganshin, Вы писали:
V>>>>windows1251 — кодировка символов V>>>>utf-8 — способ хранения многобайтных символов BZ>>>кодировка = способ хранения V>>названа конкретная кодировка, поэтому нет BZ> разница между ними — в том, что cp1251 поддерживает только подмножество unicode
кодировка не включает способ хранения
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
V> V>> Вопрос из серии как превратить тёплое в мягкое. V> V>> windows1251 — кодировка символов V> V>> utf-8 — способ хранения многобайтных символов
V> H>И то и другое — кодировки. Просто 1251 охватывает ограниченное количество символов (кодпоинтов) юникода, а utf-8 все.
V> Не надо заблуждаться, 1251 показывает отображение кодов на символы, utf-8 ничего такого не показывает
Совершенно четко показывает, иначе обратная трансформация была бы невозможна. Просто 1251 это однобайтовая кодировка, потому трансформация юникода происходит простейшим отображением, а utf-кодировки это кодировки мультибайтовые. Но кодировками от этого они быть не перестают.
Здравствуйте, hattab, Вы писали:
V>> V>> Вопрос из серии как превратить тёплое в мягкое. V>> V>> windows1251 — кодировка символов V>> V>> utf-8 — способ хранения многобайтных символов V>> H>И то и другое — кодировки. Просто 1251 охватывает ограниченное количество символов (кодпоинтов) юникода, а utf-8 все. V>> Не надо заблуждаться, 1251 показывает отображение кодов на символы, utf-8 ничего такого не показывает H>Совершенно четко показывает, иначе обратная трансформация была бы невозможна.
Она и невозможна. В utf-8 нигде не храниться информации о языке, только набор байт для какого-то символа из какой-то таблицы.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, hattab, Вы писали:
V>> _>ох уж эти мне теоретики... а вот педивикия говорит, что и то, и то — кодировка, опять врёт, чертовка? V>> врёт H>Стандарт юникода видимо тоже врет, ведь там UTF-кодировки называются Encoding forms/schemes
Была названа конкретная — utf-8.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
V> V>> V>> Вопрос из серии как превратить тёплое в мягкое. V> V>> V>> windows1251 — кодировка символов V> V>> V>> utf-8 — способ хранения многобайтных символов
V> V>> H>И то и другое — кодировки. Просто 1251 охватывает ограниченное количество символов (кодпоинтов) юникода, а utf-8 все.
V> V>> Не надо заблуждаться, 1251 показывает отображение кодов на символы, utf-8 ничего такого не показывает
V> H>Совершенно четко показывает, иначе обратная трансформация была бы невозможна.
V> Она и невозможна.
Да неужели
V> В utf-8 нигде не храниться информации о языке, только набор байт для какого-то символа из какой-то таблицы.
Покажи мне, где в 1251 хранится информация о языке. Там тоже просто байты из какой-то таблицы.
Вообще, utf-8 кодирует юникод, а языковую принадлежность кодпоинтов можно определить по диапазону. Только причем тут ссылки на язык, не совсем понятно
Здравствуйте, Vain, Вы писали:
V> V>> _>ох уж эти мне теоретики... а вот педивикия говорит, что и то, и то — кодировка, опять врёт, чертовка?
V> V>> врёт
V> H>Стандарт юникода видимо тоже врет, ведь там UTF-кодировки называются Encoding forms/schemes
V> Была названа конкретная — utf-8.
Ну так вот стандарт почитай, там тоже говориться о вполне конкретных UTF-32, UTF-16 и UTF-8.