windows1251 в utf-8 и обратно
От: Аноним  
Дата: 24.06.11 12:47
Оценка:
Требуется написать на С функции, выволняющие указанные в заголовке преобразования.
Как это вообще делается? Куда копать?
Re: windows1251 в utf-8 и обратно
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 24.06.11 12:58
Оценка: 1 (1)
Здравствуйте, Аноним, Вы писали:

А>Требуется написать на С функции, выволняющие указанные в заголовке преобразования.

А>Как это вообще делается? Куда копать?

В сторону исходинков приложения iconv
Re: windows1251 в utf-8 и обратно
От: fin_81  
Дата: 24.06.11 14:25
Оценка:
Находим таблицу соответствия кодов win1251 и юникода. Ненадежный источник http://ru.wikipedia.org/wiki/Windows-1251
Находим описание utf-8. http://ru.wikipedia.org/wiki/UTF-8

Важны следующие строки
0x00000000 — 0x0000007F | 0xxxxxxx
0x00000080 — 0x000007FF | 110xxxxx 10xxxxxx

Строим таблицу соответствия кодов cp1251 и utf8.
Символы 0x00-0x7f переходят без изменений в код utf8. Эту часть не включаем в эту таблицу.
Символы 0x7f-0xff -> 110xxxxx 10xxxxxx. Для этой части строим таблицу соответствия. Биты для иксов выравниваются по правому краю, то есть сперва забивается второй байт а остаток в левый.
Re[2]: windows1251 в utf-8 и обратно
От: fin_81  
Дата: 24.06.11 14:29
Оценка:
Поправочка.
_>Символы 0x80-0xff -> 110xxxxx 10xxxxxx.
Re[2]: windows1251 в utf-8 и обратно
От: Centaur Россия  
Дата: 24.06.11 15:09
Оценка: +1 :)
Здравствуйте, kaa.python, Вы писали:

А>>Требуется написать на С функции, выволняющие указанные в заголовке преобразования.

А>>Как это вообще делается? Куда копать?

KP>В сторону исходинков приложения iconv


Даже не надо исходники приложения, достаточно интерфейс библиотеки libiconv. Или Qt. Или ICU.

Кроме того, обратную функцию реализовывать не нужно. Текст, однажды спасённый из кодировки прошлого века, не должен возвращаться обратно.
Re: windows1251 в utf-8 и обратно
От: Vain Россия google.ru
Дата: 24.06.11 20:19
Оценка: +1 -1
Здравствуйте, Аноним, Вы писали:

А>Требуется написать на С функции, выволняющие указанные в заголовке преобразования.

А>Как это вообще делается? Куда копать?
Вопрос из серии как превратить тёплое в мягкое.
windows1251 — кодировка символов
utf-8 — способ хранения многобайтных символов
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[2]: windows1251 в utf-8 и обратно
От: const_volatile  
Дата: 24.06.11 20:38
Оценка:
Здравствуйте, Vain, Вы писали:

А>>Требуется написать на С функции, выволняющие указанные в заголовке преобразования.

А>>Как это вообще делается? Куда копать?
V>Вопрос из серии как превратить тёплое в мягкое.
V>windows1251 — кодировка символов
V>utf-8 — способ хранения многобайтных символов

ох уж эти мне теоретики... а вот педивикия говорит, что и то, и то — кодировка, опять врёт, чертовка?

ну и вот тебе самая что ни на есть практическая задача. скачал я, скажем, сериал с русскими субтитрами, файлы с субтитрами оказались в виндовой кодировке, а плеер понимает только utf-8. как тогда по-твоему назвать процесс приведения субтитров из исходного состояния к "способу хранения многобайтных символов"?
Re[2]: windows1251 в utf-8 и обратно
От: hattab  
Дата: 24.06.11 20:59
Оценка:
Здравствуйте, Vain, Вы писали:

V> А>Требуется написать на С функции, выволняющие указанные в заголовке преобразования.

V> А>Как это вообще делается? Куда копать?

V> Вопрос из серии как превратить тёплое в мягкое.

V> windows1251 — кодировка символов
V> utf-8 — способ хранения многобайтных символов

И то и другое — кодировки. Просто 1251 охватывает ограниченное количество символов (кодпоинтов) юникода, а utf-8 все.
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[2]: windows1251 в utf-8 и обратно
От: BulatZiganshin  
Дата: 25.06.11 09:08
Оценка: -1
Здравствуйте, Vain, Вы писали:

V>windows1251 — кодировка символов

V>utf-8 — способ хранения многобайтных символов

кодировка = способ хранения
Люди, я люблю вас! Будьте бдительны!!!
Re[3]: windows1251 в utf-8 и обратно
От: Vain Россия google.ru
Дата: 25.06.11 10:15
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

V>>windows1251 — кодировка символов

V>>utf-8 — способ хранения многобайтных символов
BZ>кодировка = способ хранения
названа конкретная кодировка, поэтому нет
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[3]: windows1251 в utf-8 и обратно
От: Vain Россия google.ru
Дата: 25.06.11 10:18
Оценка:
Здравствуйте, 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.]
[Даю очевидные ответы на риторические вопросы]
Re[3]: windows1251 в utf-8 и обратно
От: Vain Россия google.ru
Дата: 25.06.11 10:21
Оценка:
Здравствуйте, 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.]
[Даю очевидные ответы на риторические вопросы]
Re[4]: windows1251 в utf-8 и обратно
От: BulatZiganshin  
Дата: 25.06.11 10:21
Оценка:
Здравствуйте, Vain, Вы писали:

V>>>windows1251 — кодировка символов

V>>>utf-8 — способ хранения многобайтных символов
BZ>>кодировка = способ хранения
V>названа конкретная кодировка, поэтому нет

разница между ними — в том, что cp1251 поддерживает только подмножество unicode
Люди, я люблю вас! Будьте бдительны!!!
Re[5]: windows1251 в utf-8 и обратно
От: Vain Россия google.ru
Дата: 25.06.11 10:31
Оценка:
Здравствуйте, 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.]
[Даю очевидные ответы на риторические вопросы]
Re[4]: windows1251 в utf-8 и обратно
От: hattab  
Дата: 25.06.11 11:21
Оценка:
Здравствуйте, Vain, Вы писали:

V> V>> Вопрос из серии как превратить тёплое в мягкое.

V> V>> windows1251 — кодировка символов
V> V>> utf-8 — способ хранения многобайтных символов

V> H>И то и другое — кодировки. Просто 1251 охватывает ограниченное количество символов (кодпоинтов) юникода, а utf-8 все.


V> Не надо заблуждаться, 1251 показывает отображение кодов на символы, utf-8 ничего такого не показывает


Совершенно четко показывает, иначе обратная трансформация была бы невозможна. Просто 1251 это однобайтовая кодировка, потому трансформация юникода происходит простейшим отображением, а utf-кодировки это кодировки мультибайтовые. Но кодировками от этого они быть не перестают.
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[4]: windows1251 в utf-8 и обратно
От: hattab  
Дата: 25.06.11 11:28
Оценка:
Здравствуйте, Vain, Вы писали:

V> _>ох уж эти мне теоретики... а вот педивикия говорит, что и то, и то — кодировка, опять врёт, чертовка?


V> врёт


Стандарт юникода видимо тоже врет, ведь там UTF-кодировки называются Encoding forms/schemes
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[5]: windows1251 в utf-8 и обратно
От: Vain Россия google.ru
Дата: 25.06.11 11:31
Оценка:
Здравствуйте, 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.]
[Даю очевидные ответы на риторические вопросы]
Re[5]: windows1251 в utf-8 и обратно
От: Vain Россия google.ru
Дата: 25.06.11 11:37
Оценка:
Здравствуйте, hattab, Вы писали:

V>> _>ох уж эти мне теоретики... а вот педивикия говорит, что и то, и то — кодировка, опять врёт, чертовка?

V>> врёт
H>Стандарт юникода видимо тоже врет, ведь там UTF-кодировки называются Encoding forms/schemes
Была названа конкретная — utf-8.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[6]: windows1251 в utf-8 и обратно
От: hattab  
Дата: 25.06.11 12:09
Оценка:
Здравствуйте, 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 кодирует юникод, а языковую принадлежность кодпоинтов можно определить по диапазону. Только причем тут ссылки на язык, не совсем понятно
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[6]: windows1251 в utf-8 и обратно
От: hattab  
Дата: 25.06.11 12:09
Оценка:
Здравствуйте, Vain, Вы писали:

V> V>> _>ох уж эти мне теоретики... а вот педивикия говорит, что и то, и то — кодировка, опять врёт, чертовка?


V> V>> врёт


V> H>Стандарт юникода видимо тоже врет, ведь там UTF-кодировки называются Encoding forms/schemes


V> Была названа конкретная — utf-8.


Ну так вот стандарт почитай, там тоже говориться о вполне конкретных UTF-32, UTF-16 и UTF-8.
avalon 1.0rc3 rev 419, zlib 1.2.3
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.