![]() |
Непонятки с кодировкой...
Написал программу, которая берёт новости с моего сайта. Сайт отдаёт данные в кодировке UTF-8. MP, как я понял, принимает их именно в этом формате.
Но вот только принимаю я крякозябры. Кракозябры вида, как будто я просматриваю страницу через кодировку WESTERN. Вот ссылка на страницу http://sportmobile.net/news_p.php?type=world&num=1&t=1 прога тут: http://sport.inlanger.org.ua/104038_sportmobile.zip |
Re: Непонятки с кодировкой...
Попробуй отправлять с сервера заголовок с указанием кодировки
|
Re: Непонятки с кодировкой...
пробуй
Код:
function Str2UTF8(s: string):string; |
Re: Непонятки с кодировкой...
хм...теперь выдаёт одни квадраты.
|
Re: Непонятки с кодировкой...
1251 юзай
|
Re: Непонятки с кодировкой...
в программе или на сайте?
|
Re: Непонятки с кодировкой...
Цитата:
давай без мата, а? |
Re: Непонятки с кодировкой...
ппц...вроде форум для того, чтобы помогать, а не наезжать и флудить...
|
Ответ: Непонятки с кодировкой...
Отправляю и в Win и в utf, принимаю без перекодировок - крокозябли, ставлю указанную функцию выше, получаю квадратики, когда UTF - вроде их в 2 раза больше, но английские буквы отображаются нормально, а русские никак не хотят показываться.Есть единственный вариант который я вижу - передавать все в Encoded виде %E3.. а на мобиле конвертить обратно, можно и из UTF конвертить. Может кто подскажет, это вендь неправильно, как сделать ПРАВИЛЬНО ?
У кого есть примеры ? |
Ответ: Непонятки с кодировкой...
Что касается декодера, я бы сделал так:
Код:
uses hexdec; |
Ответ: Непонятки с кодировкой...
Вот все правильно, короче чтобы читать русские данные из интернета нужно сделать так:
1.Отправлять в Win-1251 2. Перед отправкой весь текст за URLEncode-ить (простые буквы не будут правильно отображаться, видимо потому что принимается только 7 бит, незнаю точно почему) 3. Приняв, нужно сделать URLDecode полученный текст Последнее можно сделать с помощью библиотеки http://forum.boolean.name/showthread...ghlight=hexdec и указанной выше функцией. Спасибо всем. Вижу русский текст на мобиле с интернета, Ура ! |
Ответ: Непонятки с кодировкой...
а у меня вот такой исходник сработал:
Код:
function DecodeText(text:string) : string; |
Ответ: Непонятки с кодировкой...
Объясняю. В utf-8 символы кодируются от 1 до 4 байт. Принимает программа побайтно, а при присваивании байтов типу String приводит к автоматическому преобразования данного байта к utf-8, то есть КАЖДЫЙ из байтов (а не из символов) становится от 1 до 4 байтов. То есть внешне получается, что вы utf-8 считываете в кодировке ASCII. Выход из этого вижу один. Парсить принимаемые данные в программе. Нужно отлавливать каждый байт более 192, после этого прибавлять к нему ВСЕ байты, идущие за ним, ПОКА не встретится байт менее 128 или более 192. Все эти байты в той же последовательности берём как int и конкатенируем к строке (или через буфер) с приставкой (char). Это я говорю, как бы я на Java сделал бы. Хотел я либу написать даже, гг. Но мне кажется, что способ весьма тормозной. Но зато полная интернациональность - возможность передавать текст на любом языке, а не только на русском. Но если использовать utf-8 для передачи через интернет, то нужно помнить, что траффик будет больше.
|
Часовой пояс GMT +4, время: 19:14. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot