Re[6]: windows1251 в utf-8 и обратно
От: uzhas Ниоткуда  
Дата: 25.06.11 12:24
Оценка:
Здравствуйте, Vain, Вы писали:

V>В utf-8 нигде не храниться информации о языке, только набор байт для какого-то символа из какой-то таблицы.

таблица не какая-то, а вполне конкретная
http://en.wikibooks.org/wiki/Unicode/Character_reference/2000-2FFF (это часть большой юникодной таблицы)
у win1251 своя таблица, которая неким символам (русского языка) сопоставляет число (8 бит)
utf-8 имеет другую таблицу (юникод) и тоже сопоставляет элементам этой таблицы последовательность бит (от 8 до 32 бит)
для того, чтобы сконвертировать win1251 в utf-8 надо понять, имеются ли аналоги элементов первой таблицы во второй (в юникоде). оказывается, что в юникоде есть аналогичные символы, поэтому конвертация возможна
utf-16 и utf-8 кодируют битами эелементы одной и той же таблицы
Re: windows1251 в utf-8 и обратно
От: Mucmep  
Дата: 26.06.11 09:08
Оценка: +2 -2
Здравствуйте, Аноним, Вы писали:

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

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

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

Аноним, может вам поможет
char *xcode(LPCSTR pSrcStr, UINT srcCodepage, UINT dstCodepage)
{
int wsize = MultiByteToWideChar(srcCodepage, 0, pSrcStr, -1, NULL, 0);
LPWSTR wbuf = (LPWSTR)mallocz(wsize*sizeof(WCHAR));
MultiByteToWideChar(srcCodepage, 0, pSrcStr, -1, wbuf, wsize);
int size = WideCharToMultiByte(dstCodepage, 0, wbuf, -1, NULL, 0, NULL, NULL);
LPSTR buf = (LPSTR)mallocz(size);
WideCharToMultiByte(dstCodepage, 0, wbuf, -1, buf, size, NULL, NULL);
bfree(wbuf);
return buf;
}
Re[2]: windows1251 в utf-8 и обратно
От: hattab  
Дата: 26.06.11 09:43
Оценка:
Здравствуйте, Mucmep, Вы писали:

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

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

M> Блин, я фигею с наших программистов.

M> Человек задал конкретный вопрос и, вместо того, чтобы конкретно ответить на вопрос, устроили срач о том, что является кодировкой, а что нет.
M> Я думал, форум создан для помощи, а не повышении ЧСВ.

Он спросил куда копать, ему ответили Чем ты не доволен, добрых дел мастер?
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[3]: windows1251 в utf-8 и обратно
От: Mucmep  
Дата: 26.06.11 11:20
Оценка:
Здравствуйте, hattab, Вы писали:

H>Здравствуйте, Mucmep, Вы писали:


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

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

M>> Блин, я фигею с наших программистов.

M>> Человек задал конкретный вопрос и, вместо того, чтобы конкретно ответить на вопрос, устроили срач о том, что является кодировкой, а что нет.
M>> Я думал, форум создан для помощи, а не повышении ЧСВ.

H>Он спросил куда копать, ему ответили Чем ты не доволен, добрых дел мастер?


Я тебе уже ответил , в_каждую_жопу_затычка.
Re[4]: windows1251 в utf-8 и обратно
От: hattab  
Дата: 26.06.11 12:33
Оценка: -1
Здравствуйте, Mucmep, Вы писали:

M> H>Он спросил куда копать, ему ответили Чем ты не доволен, добрых дел мастер?


M> Я тебе уже ответил , в_каждую_жопу_затычка.


Вообще-то, говорят в каждую бочку затычка. В твоем петушатнике этого не знают?
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[5]: windows1251 в utf-8 и обратно
От: trophim Россия  
Дата: 26.06.11 15:56
Оценка:
Здравствуйте, hattab, Вы писали:

H>Здравствуйте, Mucmep, Вы писали:


M>> H>Он спросил куда копать, ему ответили Чем ты не доволен, добрых дел мастер?


M>> Я тебе уже ответил , в_каждую_жопу_затычка.


H>Вообще-то, говорят в каждую бочку затычка. В твоем петушатнике этого не знают?


По поводу кода: именно это автор видимо и искал (так ведь, да?).
По поводу срача: ну реально из ничего начали лаяться, как-то непрофессионально, ибо не имеет никакого отношения к вопросу.
И какая разница что есть кодировка. Мы преследуем эстетизм, корректность формулировок и вообще 'вам шашечки или ехать'?
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Let it be! — Давайте есть пчелу!
Re[5]: windows1251 в utf-8 и обратно
От: Mucmep  
Дата: 26.06.11 16:06
Оценка: -2 :))) :)
Здравствуйте, hattab, Вы писали:

H>Здравствуйте, Mucmep, Вы писали:


M>> H>Он спросил куда копать, ему ответили Чем ты не доволен, добрых дел мастер?


M>> Я тебе уже ответил , в_каждую_жопу_затычка.


H>Вообще-то, говорят в каждую бочку затычка. В твоем петушатнике этого не знают?


Послушай, страшный тирарист, я таких как ты не одобряю и не поддерживаю. Понятное дело, вас, петухов, не развожу и разводить никогда не буду, чего вы там должны знать не в курсе. Чтобы ты не надеялся напрасно и избежать траты времени на дальнейшие намеки, скажу сразу, знакомых геев у меня тоже нет. Поэтому, не могу подогнать тебе никого кто бы распечатал тебе жопу, но ты не отчаивайся, продолжай искать и наверняка найдется кто-то, кто тебя осчастливит. Но, чтобы тебе повезло быстрее, говори прямо, что ты гей, ищешь партнера по ролевым играм, ты тирарист, партнер — ЧКист поймавший и наказывающий тирариста. А теперь сделай одолжение, с*ебись с форума и забери своих "друзей по заду", сделайте себе сайт bluemamba.com и общайтесь там, не засерайте форум своей гомосятиной, превратили rsdn в помойку для гламурных геев. Гомосеки-волшебники, имейте совесть, это сайт о программировании.
Re[6]: windows1251 в utf-8 и обратно
От: hattab  
Дата: 26.06.11 16:25
Оценка: +2
Здравствуйте, trophim, Вы писали:

t> По поводу кода: именно это автор видимо и искал (так ведь, да?).


ТС спросил:

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


Ему довольно доходчиво ответили
Автор: fin_81
Дата: 24.06.11
.

t> По поводу срача: ну реально из ничего начали лаяться, как-то непрофессионально, ибо не имеет никакого отношения к вопросу.


Появляется некто и начинает охать и ахать о том какие у нас программисты нехорошие. Ну захотел дать готовый код, можно дать без рассусоливаний и отсылок к ЧСВ.

t> И какая разница что есть кодировка. Мы преследуем эстетизм, корректность формулировок и вообще 'вам шашечки или ехать'?


У нас тут форум подразумевающий общение или где? Если человек допускает некорректность в формулировке и в дальнейшем на ней настаивает, не вижу причин это не обсудить
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[6]: windows1251 в utf-8 и обратно
От: hattab  
Дата: 26.06.11 16:27
Оценка:
Здравствуйте, Mucmep, Вы писали:

M> H>Здравствуйте, Mucmep, Вы писали:


M> M>> H>Он спросил куда копать, ему ответили Чем ты не доволен, добрых дел мастер?


M> M>> Я тебе уже ответил , в_каждую_жопу_затычка.


M> H>Вообще-то, говорят в каждую бочку затычка. В твоем петушатнике этого не знают?


M> Послушай, страшный тирарист, я таких как ты не одобряю и не поддерживаю. Понятное дело, вас, петухов, не развожу и разводить никогда не буду, чего вы там должны знать не в курсе. Чтобы ты не надеялся напрасно и избежать траты времени на дальнейшие намеки, скажу сразу, знакомых геев у меня тоже нет. Поэтому, не могу подогнать тебе никого кто бы распечатал тебе жопу, но ты не отчаивайся, продолжай искать и наверняка найдется кто-то, кто тебя осчастливит. Но, чтобы тебе повезло быстрее, говори прямо, что ты гей, ищешь партнера по ролевым играм, ты тирарист, партнер — ЧКист поймавший и наказывающий тирариста. А теперь сделай одолжение, с*ебись с форума и забери своих "друзей по заду", сделайте себе сайт bluemamba.com и общайтесь там, не засерайте форум своей гомосятиной, превратили rsdn в помойку для гламурных геев. Гомосеки-волшебники, имейте совесть, это сайт о программировании.


Усохни, истеричка.
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[2]: windows1251 в utf-8 и обратно
От: c-smile Канада http://terrainformatica.com
Дата: 26.06.11 17:45
Оценка: 6 (1) +3
Здравствуйте, Vain, Вы писали:

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

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

О как... "многобайтные символы" это что-то новое...

Короче:

windows1251, utf-8, ascii, koi8 и все остальные есть транспортные кодировки unicode code points.
Кодировка может быть полная (utf-8, utf-16, GB18030 — охватывает весь unicode code point range) или частичная (windows1251, ascii, koi8).
Кодировка может иметь byte code unit — windows1251, utf-8, ascii, koi8, а может иметь word code unit — utf-16.
Кодировка может иметь variable number of code units per code point — utf-8, utf-16, GB18030... , а может иметь one code unit per code point — windows1251, koi8, utf-32.
Re[2]: windows1251 в utf-8 и обратно
От: Centaur Россия  
Дата: 26.06.11 17:59
Оценка:
Здравствуйте, Mucmep, Вы писали:

M>Аноним, может вам поможет

[ccode]
M>char *xcode(LPCSTR pSrcStr, UINT srcCodepage, UINT dstCodepage)
M>{
M> int wsize = MultiByteToWideChar(srcCodepage, 0, pSrcStr, -1, NULL, 0);
M> LPWSTR wbuf = (LPWSTR)mallocz(wsize*sizeof(WCHAR));
M> MultiByteToWideChar(srcCodepage, 0, pSrcStr, -1, wbuf, wsize);
M> int size = WideCharToMultiByte(dstCodepage, 0, wbuf, -1, NULL, 0, NULL, NULL);
M> LPSTR buf = (LPSTR)mallocz(size);
M> WideCharToMultiByte(dstCodepage, 0, wbuf, -1, buf, size, NULL, NULL);
M> bfree(wbuf);
M> return buf;
M>}
[/code]

Поскольку с исходном сообщении не было сказано, что решение ищется под Win32, по умолчанию предполагаем, что нужно кроссплатформенное.
Re[3]: windows1251 в utf-8 и обратно
От: uzhas Ниоткуда  
Дата: 26.06.11 19:35
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Короче:

CS>windows1251, utf-8, ascii, koi8 и все остальные есть транспортные кодировки unicode code points.

все же я не соглашусь с вашим мнением и поддержу идею, вызказанную Vain:
"старые" кодировки задают соответствие между кодом (байтом) и символом, причем в отрыве от юникода
кодировки изначально были созданы в отсутствии юникода, поэтому они не могут на него ссылаться
юникод был создан для того, чтобы изничтожить кодировки, т.к. с ними слишком много хлопот было
поэтому в него попытались засунуть самые распространенные кодировки, чтобы переход с кодировок на юникод был наиболее безболезненным
я вполне допускаю существование кодировки, в которой был символ, который не представим в юникоде вообще или для его представления требуется несколько юникодных code points
напомню, что для всяких умляутов, ударений, зачеркиваний существуют спец. code points, которые вносят трансормацию предыдущему символу с целью добавить в него умляут, ударение и тд.
Re[3]: windows1251 в utf-8 и обратно
От: Vain Россия google.ru
Дата: 26.06.11 23:09
Оценка:
Здравствуйте, c-smile, Вы писали:

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

V>>windows1251 — кодировка символов
V>>utf-8 — способ хранения многобайтных символов
CS>О как... "многобайтные символы" это что-то новое...
CS>Короче:
CS>windows1251, utf-8, ascii, koi8 и все остальные есть транспортные кодировки unicode code points.
CS>Кодировка может быть полная (utf-8, utf-16, GB18030 — охватывает весь unicode code point range) или частичная (windows1251, ascii, koi8).
CS>Кодировка может иметь byte code unit — windows1251, utf-8, ascii, koi8, а может иметь word code unit — utf-16.
CS>Кодировка может иметь variable number of code units per code point — utf-8, utf-16, GB18030... , а может иметь one code unit per code point — windows1251, koi8, utf-32.
Кто вам мешает туда запихнуть символы из разных таблиц?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[3]: windows1251 в utf-8 и обратно
От: Vain Россия google.ru
Дата: 26.06.11 23:18
Оценка:
Здравствуйте, c-smile, Вы писали:

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

V>>windows1251 — кодировка символов
V>>utf-8 — способ хранения многобайтных символов
CS>О как... "многобайтные символы" это что-то новое...
Вы с этим не согласны?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[4]: windows1251 в utf-8 и обратно
От: Cyberax Марс  
Дата: 26.06.11 23:35
Оценка:
Здравствуйте, uzhas, Вы писали:

CS>>Короче:

CS>>windows1251, utf-8, ascii, koi8 и все остальные есть транспортные кодировки unicode code points.
U>все же я не соглашусь с вашим мнением и поддержу идею, вызказанную Vain:
U>"старые" кодировки задают соответствие между кодом (байтом) и символом, причем в отрыве от юникода
Это не так. Были "старые" кодировки с композитными символами (для арабского), просто много менее распространены.

U>кодировки изначально были созданы в отсутствии юникода, поэтому они не могут на него ссылаться

Тем не менее, при стандартизации Юникода позаботились, чтобы все символы "старых" кодировок попали в стандарт (насколько я знаю, это не сразу получилось, но сейчас в стандарте большинство символов есть).

U>юникод был создан для того, чтобы изничтожить кодировки, т.к. с ними слишком много хлопот было

Нет, Юникод был создан для стандартизации набора символов. А кодировки — это не более чем способ передачи этих символов.

U>напомню, что для всяких умляутов, ударений, зачеркиваний существуют спец. code points, которые вносят трансормацию предыдущему символу с целью добавить в него умляут, ударение и тд.

Это называется "композитные символы", и не имеет никакого отношения к кодировкам.
Sapienti sat!
Re[4]: windows1251 в utf-8 и обратно
От: const_volatile  
Дата: 26.06.11 23:55
Оценка:
Здравствуйте, uzhas, Вы писали:

CS>>Короче:

CS>>windows1251, utf-8, ascii, koi8 и все остальные есть транспортные кодировки unicode code points.
U>все же я не соглашусь с вашим мнением и поддержу идею, вызказанную Vain:
U>"старые" кодировки задают соответствие между кодом (байтом) и символом, причем в отрыве от юникода

и юникод задаёт соотвествие между кодом (набором байт) и символом.

U>кодировки изначально были созданы в отсутствии юникода, поэтому они не могут на него ссылаться


и что?

U>юникод был создан для того, чтобы изничтожить кодировки, т.к. с ними слишком много хлопот было

U>поэтому в него попытались засунуть самые распространенные кодировки, чтобы переход с кодировок на юникод был наиболее безболезненным

никакие кодировки в него не засовывали. засовывали символы, которые до юникода представлялись разными кодировками. в конце концов, unicode означает UNIform enCODing, т.е. унифицированная кодировка. как после этого можно всерьёз утверждать, что юникод — не кодировка, я не понимаю.

U>напомню, что для всяких умляутов, ударений, зачеркиваний существуют спец. code points, которые вносят трансормацию предыдущему символу с целью добавить в него умляут, ударение и тд.


хм. можешь как-то подтвердить это? просто такое поведение противоречит принципам, на основе которых создавался уникод. я допускаю, что могут быть code points, которые меняют представление последующих знаков (собственно utf-8 примерно так и построен), но никак не предыдущих. по-твоему, если данные посимвольно отправляются на печать, то получив полный символ нельзя его сразу напечатать, потому что следом может идти модификатор? вобщем хотелось бы ссылочку на стандарт или какой-нибудь rfc.
Re[4]: windows1251 в utf-8 и обратно
От: const_volatile  
Дата: 26.06.11 23:55
Оценка:
Здравствуйте, Vain, Вы писали:

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

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

кодировка — это в том числе и "способ хранения". просто чтобы ты знал ^_^

CS>>О как... "многобайтные символы" это что-то новое...

V>Вы с этим не согласны?

нет конечно. "символ" — понятие абстрактное, с битами и байтами никак не связанное. а вот для хранения и передачи символов и их последовательностей как раз и существуют разнообразные кодировки. и только в рамках конкретной кодировки можно говорить о количестве байт в представлении символов. и, кстати, кодировки бывают не только компьютерные. азбука морзе — это тоже кодировка, изобретённая задолго до появления термина "байт". вобщем я честно говоря не понимаю ни твоей позиции, ни упёртости, с которой ты её отстаиваешь. такое ощущение, что у тебя в голове какие-то свои определения понятий "символы" и "кодировки", которые ничего общего с общепринятыми не имеют.
Re[5]: windows1251 в utf-8 и обратно
От: Cyberax Марс  
Дата: 27.06.11 00:10
Оценка: +1
Здравствуйте, const_volatile, Вы писали:

_>никакие кодировки в него не засовывали. засовывали символы, которые до юникода представлялись разными кодировками. в конце концов, unicode означает UNIform enCODing, т.е. унифицированная кодировка. как после этого можно всерьёз утверждать, что юникод — не кодировка, я не понимаю.

Имя "Unicode" официально никак не расшифровывается, и конкретно в самом стандарте оперируют не байтами, а codepoint'ами. Которые уже могут быть кодированы разными способами.
Sapienti sat!
Re[5]: windows1251 в utf-8 и обратно
От: Vain Россия google.ru
Дата: 27.06.11 01:15
Оценка:
Здравствуйте, const_volatile, Вы писали:

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

V>>>>windows1251 — кодировка символов
V>>>>utf-8 — способ хранения многобайтных символов
_>кодировка — это в том числе и "способ хранения". просто чтобы ты знал ^_^
Кодировка языка это просто табличка символов, которую можно представлять как угодно. просто чтоб знал ты.

CS>>>О как... "многобайтные символы" это что-то новое...

V>>Вы с этим не согласны?
_>нет конечно. "символ" — понятие абстрактное, с битами и байтами никак не связанное.
"цвет" понятие абстрактное, с битами и байтами не связанное.

_>а вот для хранения и передачи символов и их последовательностей как раз и существуют разнообразные кодировки. и только в рамках конкретной кодировки можно говорить о количестве байт в представлении символов. и, кстати, кодировки бывают не только компьютерные. азбука морзе — это тоже кодировка, изобретённая задолго до появления термина "байт".

Это ты щас к чему привёл? Мне нужно клинопись в качестве ответного примера привести? Тоже ведь за долго до.

_>вобщем я честно говоря не понимаю ни твоей позиции, ни упёртости, с которой ты её отстаиваешь. такое ощущение, что у тебя в голове какие-то свои определения понятий "символы" и "кодировки", которые ничего общего с общепринятыми не имеют.

Это скорее у вас котлеты с мухами подают, у нас как раз такое не принято.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[6]: windows1251 в utf-8 и обратно
От: const_volatile  
Дата: 27.06.11 02:27
Оценка:
Здравствуйте, Vain, Вы писали:

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

V>>>>>windows1251 — кодировка символов
V>>>>>utf-8 — способ хранения многобайтных символов
_>>кодировка — это в том числе и "способ хранения". просто чтобы ты знал ^_^
V>Кодировка языка это просто табличка символов, которую можно представлять как угодно.

это и есть твоё определение понятия "кодировка"? мда, "табличка", "как угодно"... детский сад, штаны на лямках. впрочем, даже в рамках этого убого определения utf-8 таки является кодировкой.

а теперь что понимает под кодировкой реальный мир. во-первых, в рамках CS/IT оперируют понятием "кодировки" не "языков", а "символов". "кодировка языка" — это юстас-алексу, шифрограммы и прочая не относящаяся к теме беллетристика. во-вторых, кодировкой символов называют соглашение о соответствии некоторого набора символов набору цифр, или кодов. согласно этому определению (общепринятому в computer science), и ASCII, и KOI-8, и Windows-1251, и UTF-8 — это всё кодировки. если же у тебя другое мнение на этот счёт, остаётся только порадоваться за твой живой ум, однако вступать в дискуссии по-моему опрометчиво с твоей стороны. в конце концов, непонимание основ чревато в нашей профессии. сначала незнание определения, потом несоответствие стандарту, а потом -бац- очередной шедевр вроде internet explorer 6.

CS>>>>О как... "многобайтные символы" это что-то новое...

V>>>Вы с этим не согласны?
_>>нет конечно. "символ" — понятие абстрактное, с битами и байтами никак не связанное.
V>"цвет" понятие абстрактное, с битами и байтами не связанное.

само собой. кстати, если юникод худо-бедно охватывает символы и знаки почти всех народов мира, то с цветами всё не так радужно, к rgb сводится только огрызок цветового пространства Lab, не говоря уж о несовместимости rgb-профилей разных устройств ^_^

_>>а вот для хранения и передачи символов и их последовательностей как раз и существуют разнообразные кодировки. и только в рамках конкретной кодировки можно говорить о количестве байт в представлении символов. и, кстати, кодировки бывают не только компьютерные. азбука морзе — это тоже кодировка, изобретённая задолго до появления термина "байт".

V>Это ты щас к чему привёл? Мне нужно клинопись в качестве ответного примера привести? Тоже ведь за долго до.

к тому, что у тебя каша в голове и ты понятия не имеешь что такое "символы" и их "кодировки". ну и пример твой, разумеется, ошибочен. азбука морзе — это общепринятое соглашение о соответствии символов латинского алфавита радиосигналам. всё в рамках вышеприведённого определения. клинопись же — это иероглифическая письменность, графическое представление устной речи, так же как и современные иероглифы. я, кстати, не удивлюсь, если в юникоде найдётся представление символов клинописи ^_^

_>>вобщем я честно говоря не понимаю ни твоей позиции, ни упёртости, с которой ты её отстаиваешь. такое ощущение, что у тебя в голове какие-то свои определения понятий "символы" и "кодировки", которые ничего общего с общепринятыми не имеют.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.