Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Unicode -> cp1251 [D6, WinXP]


Страницы:   1 2

georgius ©   (2006-12-18 18:40:00) 

Появилась срочная необходимость конвертировать юникод обратно в кириллицу. Строки содержат русский и латинский текст и ... псевдографику, так что легких путей нет.
WideCharToMultiByte возвращает какую-то муть, даже длина строки не соответствует исходной.


Anatoly Podgoretsky   (2006-12-19 16:26:00) [21]

> tesseract  (19.12.2006 16:23:11)  [11]

Надеюсь, ты про размер говорил, а не про буфер?


Anatoly Podgoretsky   (2006-12-19 16:25:00) [22]

> Джо  (19.12.2006 16:19:10)  [10]

а кодировка это не encodings, а code page


tesseract   (2006-12-19 16:23:00) [23]


> Anatoly Podgoretsky ©   (19.12.06 16:01) [7]


Мне в Turbo Delphi почему-то постоянно везёт :-)


Джо   (2006-12-19 16:19:00) [24]

> [9] Anatoly Podgoretsky ©   (19.12.06 16:13)
> > Джо  (19.12.2006 16:05:08)  [8]
>
> > UTF-8 и даже UTF-7
>
> Это не кодировка, а транспортная упаковка того же Юникод,
> это все равно, что сказать, что Base64/QP/PlainText/Mime
> это кодировка.

Нет, терминологически, UTF-8, UTF-7, CESU-8 и т.д — это именно "encodings", т.е., «кодировки».


Anatoly Podgoretsky   (2006-12-19 16:13:00) [25]

> Джо  (19.12.2006 16:05:08)  [8]

> UTF-8 и даже UTF-7

Это не кодировка, а транспортная упаковка того же Юникод, это все равно, что сказать, что Base64/QP/PlainText/Mime это кодировка.


Джо   (2006-12-19 16:05:00) [26]

> [5] Anatoly Podgoretsky ©   (19.12.06 15:46)
> > Джо  (19.12.2006 15:43:04)  [4]
>
> Я вообще то за все время видел только UCS2, а про UCS4 только
> слышал, а других Юникодов не существует

Кроме UCS2 (AKA UTF-16), есть еще UTF-8 и даже UTF-7. Кроме того, строка может быть предварена маркером порядка байтов (FF FE или FE FF), а может и нет. И т.д., и т.п. В общем, кодировок, основанных на UNICODE — как собак нерезанных :)


Anatoly Podgoretsky   (2006-12-19 16:01:00) [27]

> tesseract  (19.12.2006 15:49:06)  [6]

1. возможно, если повезет
2. 0 за nil отругает, если конечная кодировка OEM/ANSI то длина заранее известна


tesseract   (2006-12-19 15:49:00) [28]

А просто String:=WideString? должна сработать конвертация.


> WideCharToMultiByte возвращает какую-то муть, даже длина
> строки не соответствует исходной.


И не должна. Функцию надо раз вызвать c nil в качестве получаетля, для того чтобы определить количество памяти под строку.


Anatoly Podgoretsky   (2006-12-19 15:46:00) [29]

> Джо  (19.12.2006 15:43:04)  [4]

Я вообще то за все время видел только UCS2, а про UCS4 только слышал, а других Юникодов не существует


Джо   (2006-12-19 15:43:00) [30]

> [3] Anatoly Podgoretsky ©   (19.12.06 09:47)
> > Джо  (19.12.2006 4:23:02)  [2]
>
> Но в Виндоус то используется один.

Мало ли откуда в его программе эти строки берутся. Может, из сети, может, из сообщений SMS, а может и из деревни от дедушки.


Anatoly Podgoretsky   (2006-12-19 09:47:00) [31]

> Джо  (19.12.2006 4:23:02)  [2]

Но в Виндоус то используется один.


Джо   (2006-12-19 04:23:00) [32]

Юникод он, как бы это сказать, разный бывает.


Anatoly Podgoretsky   (2006-12-18 18:43:00) [33]

> georgius  (18.12.2006 18:40:00)  [0]

Это тяжелых нет, а легкий путь как раз WideCharToMultiByte


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо