| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Кодировки из чего-то во что-то |
| Автор: Zlo 21.8.2011, 02:31 | ||||
| Столкнулся с проблемой в D2009, при загрузке странички с помощью indy IdHTTP в Memo получается вот такая петрушка с русскими символами. кусочек кода странички:
Путем экспериментов мне все таки удалось сделать сделать из этого русский текст, далее немного сути: Код символа "Â" = 194, в русском это буква "В" и ее код в моем проекте показывает как 1042 1042-194=848, именно эта магическая цифра отделяет меня от нормального отображения русских букв. пришлось перебирать все символы что бы текст стал читаемым, прибавляя к символам 848 код которых более 190, с помощью такого кода:
Однако делается это очень медленно, соответственно может быть ктонить знает, что это за кодировка, и как большой объем символов конвертнуть в Unicode т.к. скорее всего проблема именно в этом. |
| Автор: Alexeis 21.8.2011, 10:40 | ||
Как бы неплохо узнать какая настоящая кодировка у страницы. Для UTF8 я делал так
Добавлено через 1 минуту и 41 секунду P.S. браузером посмотри. Он показывает какую выбрал. |
| Автор: Snowy 22.8.2011, 10:55 |
| Обычная кодировка 1251. Просто набор символов западноевропейский, а не кириллица. Смени чарсет на русский. Если он дефолтный, значит в системе дефолтный язык не русский. |
| Автор: Zlo 22.8.2011, 18:33 |
| Да, это 1251. и браузеры ее спокойно пережевывают, а вот прога нет... В системе везде стоит русский/Россия |
| Автор: Snowy 22.8.2011, 19:03 |
| У тебя изначально где-то неверная перекодировка в юникод без указания кодировки прошла (кодировка 00, а не 04). Чтобы проконтролировать данный процесс - получи результат в AnsiString. Задача №1 - получить страницу в AnsiString. Задача №2 - конвертировать в string любым имеющимся способом. Обычно простым присвоением. Если неудачно - искать другие способы. Но шаг №1 - обязательно. Добавлено @ 19:08 Конечно - ты же используешь RichEdit посимвольно, а также посимвольно выводишь в мемо. Даведи 2 отдельные переменные - в одну присвой текст из ричедита, а результат складывай во вторую, которую потом и добавь в мемо - скорость вырастет в тысячи раз. Но это совет про запас. На разных компьютерах ты можешь получить разный результат - где-то сконвертится нормально и ты на выходе получишь абракадабру. Лучше перекодировать анси в юникод, а не юникод в юникод с вероятностью нарваться на китайский. |
| Автор: CodeMonkey 23.8.2011, 09:01 |
| http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=68134. http://www.webdelphi.ru/2011/06/obnovlenie-mlang-dobavlena-podderzhka-delphi-4-xe/. |
| Автор: Zlo 29.8.2011, 00:39 | ||
Спасибо CodeMonkey и всем помогавшим, проблема решена способом по ссылке http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=68134
|
| Автор: CodeMonkey 29.8.2011, 10:01 |
| *facepalm* |