![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Unicode -> cp1251 [D6, WinXP]
georgius © (2006-12-18 18:40:00)Появилась срочная необходимость конвертировать юникод обратно в кириллицу. Строки содержат русский и латинский текст и ... псевдографику, так что легких путей нет.
WideCharToMultiByte возвращает какую-то муть, даже длина строки не соответствует исходной.
Zeqfreed (2006-12-19 22:31:00) [1]> umbra © (19.12.06 19:52) [29]
> И, согласитесь, они все таки сокращают размер передаваемых
> данных (если считать, что в основном используются символы
> с кодами размером в байт) убирая те самые нули
UTF-8 ни для какого диапазона символов не сокращает размер передаваемых данных. Для русского языка, например, в этой кодировке будут использованы 2 байта на символ, а для символов китайского - все четыре. Размер данных сохраняется только для символов из стандартного набора ANSI символов.
Anatoly Podgoretsky (2006-12-19 20:39:00) [2]> umbra (19.12.2006 20:04:31) [31]
Намек, намек
umbra (2006-12-19 20:04:00) [3]2 Anatoly Podgoretsky © (19.12.06 19:59) [30]
у меня такое впечатление, что это намек, но моих способностей не хватает, чтобы им воспользоваться.
Anatoly Podgoretsky (2006-12-19 19:59:00) [4]> umbra (19.12.2006 19:52:29) [29]
7 или 8 означает количество бит!
umbra (2006-12-19 19:52:00) [5]
> 2 или 4 значит количество байт
>
я в курсе :)
> во первых при передаче с помощью UTF объем увеличивается
насколько я знаю, UTF-7 сделана специально для передачи по каналам связи, а Utf-8 - чтобы использовать два байта на символ только когда это необходимо. И, согласитесь, они все таки сокращают размер передаваемых данных (если считать, что в основном используются символы с кодами размером в байт) убирая те самые нули
Anatoly Podgoretsky (2006-12-19 19:40:00) [6]> umbra (19.12.2006 18:10:24) [24]
> (нужные, в теории, для уменьшения объема передаваемых данных)
В теории не так, во первых при передаче с помощью UTF объем увеличивается, а нужны транспортные "кодировки" для прохождения через транспортный канал. UTF-7 использует семибитные символы, а UTF-8 восьмибитные соответственно. В итоге в упакованом виде в них отсутствуют непечатные символы, не совместимые с транспортным каналом, особенно опасен байт со значением 0, а для западноевропейских это каждый второй байт. Не лучше дело обстоит и с другими языками, для кирилицы это байт 04, есть и другие которые не совместимы с каналом, особенно с американским 7 битным, такие сервера еще остались.
Anatoly Podgoretsky (2006-12-19 19:33:00) [7]> umbra (19.12.2006 18:27:26) [26]
2 или 4 значит количество байт
umbra (2006-12-19 18:27:00) [8]ну, UCS-4 в данный исторический период нужна только каким-то суперэкзотическим языкам или наборам неязыковых символов. Я так понимаю, что это Уникод, версия 2. Т.е. это не "кодировка для передачи", а, пока что ненужный, стандарт.
Джо (2006-12-19 18:17:00) [9]Ну, они не только для «уменьшения объема передаваемых данных» служат. UCS-4, например, явно избыточна во многих случаях и употребляется для того, чтобы кол-во байт для любой кодовой позиции было одинаковым.
umbra (2006-12-19 18:10:00) [10]Джо © (19.12.06 17:02) [22]
в контексте обсуждения это больше всего похоже на "кодировка для передачи", поскольку, хотя набор кодов символов один (уникод), из-за различия в кол-ве байт на символ, транспортные кодировки (нужные, в теории, для уменьшения объема передаваемых данных) могут быть разными (упомянутые UTF-8, UTF-7). И хотя коды символов при этом одинаковы, но, чтобы восстановить текст, все равно надо знать способ кодирования, примененный при передаче.
Anatoly Podgoretsky (2006-12-19 17:12:00) [11]> Джо (19.12.2006 17:02:22) [22]
Я бы не стал переводить, во первых там много мути намутили, во вторых в отрыве от контекста. Сообственно мне перевод, думаю и тебе, не требуется, мы всегда знаем о чем в том или другом случае идет речь.
Но если предположить, что речь именно об Юникод, то можно перевести как масло масляное. Подчеркивают, что для кодирования символов используется Юникод.
Джо (2006-12-19 17:02:00) [12]Кстати, предлагаю разрулить терминологическую неточность (двусмысленность). Каким образом следует переводить выражание "Unicode encodings"?
Anatoly Podgoretsky (2006-12-19 16:46:00) [13]> Джо (19.12.2006 16:43:20) [20]
Не играет роли, Юникод один, пока, потом может и второй получит распространение.
С этим Юникодом и Микрософтом вообще смешная вещь.
Джо (2006-12-19 16:43:00) [14]Ну, это вопрос перевода терминологии на русский язык.
Тем не менее, как бы мы не называли способ записи, «кодировкой» или нет, если не знать этот способ, то интерпретировать строку нельзя. А способов записи — множество.
Anatoly Podgoretsky (2006-12-19 16:39:00) [15]> Джо (19.12.2006 16:36:18) [18]
Я не говорю что применимо, Юникод это всего одна кодировка, в отличии от прочего.
Джо (2006-12-19 16:36:00) [16]> [15] Anatoly Podgoretsky © (19.12.06 16:29)
> > Джо (19.12.2006 16:27:14) [14]
>
> Поэтому только всего два Юникода - ucs2 aka Unicode16 и
> ucs4 aka Unicode32
> Нету у Юникод кодировок, в отличии от ASCII/ANSI
Отчего же «поэтому»?
Я как раз понимаю так, что Юникод, собственно говоря, это просто большая таблица кодовых позиций. А как они будут записаны — это уже вопрос конкретной кодировки (encoding). Понятие code page вообще к Юникоду неприменимо в принципе, это совсем из другой оперы.
Anatoly Podgoretsky (2006-12-19 16:34:00) [17]> tesseract (19.12.2006 16:30:16) [16]
Работает, но ограничено, если повезет, что ACP правильный и Юникод содержит символы только данного ACP то все отработает как требуется без всякой магии и дополнительного кода. Но это если повезет, вот мне обычно не везет.
tesseract (2006-12-19 16:30:00) [18]
> Anatoly Podgoretsky © (19.12.06 16:26) [13]
про string:=WideString и наоборот :-)
Anatoly Podgoretsky (2006-12-19 16:29:00) [19]> Джо (19.12.2006 16:27:14) [14]
Поэтому только всего два Юникода - ucs2 aka Unicode16 и ucs4 aka Unicode32
Нету у Юникод кодировок, в отличии от ASCII/ANSI
Джо (2006-12-19 16:27:00) [20]> [12] Anatoly Podgoretsky © (19.12.06 16:25)
> > Джо (19.12.2006 16:19:10) [10]
>
> а кодировка это не encodings, а code page
Code page — это «кодовая страница». В Юникоде вообще это понятие упразднено за ненужностью.