Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2014, 22:35   #1
FLIER
Пользователь
 
Регистрация: 28.12.2007
Сообщений: 39
Сообщение Utf-8 нечитабельные знаки

Здравствуйте. Загружаю пакет через httpsend (synapse). Распаковываю и сохраняю в файл.

Код HTML:
procedure UnzipHttp(http: THTTPSend; stream:TStream);
begin
 HeadersToList(http.Headers);//привели заголовки к виду Name=Value
 Stream.Size     := 0;
 Stream.Position := 0;
  if Trim(http.Headers.Values['Content-Encoding']) = 'gzip' then {проверяем заголовок}
   begin
     //тут разжимаем данные
    GZDecompressStream(http.Document, Stream);
   end
    else
   begin
    //так как данные не сжаты - просто считываем строку
    http.Document.SaveToStream(Stream);
   end;
end;
....
var
Stream: TStringStream;
...
UnzipHttp(Httpsend, stream);
stream.SaveToFile('c:\1\INPUT1.txt');

Заголовки ответа:


Код HTML:
(Status-Line):HTTP/1.1 200 OK
Server:nginx
Date:Mon, 10 Nov 2014 19:19:46 GMT
Content-Type:text/html;charset=UTF-8
Connection:keep-alive
Access-Control-Allow-Origin:http://www.....com
Content-Length:8388
Смотрю полученный текст в мемо

Код HTML:
Stream := TStringStream.Create; Stream.Size := 0; Stream.Position := 0;
html   := TStringList.Create;


Stream.LoadFromFile('c:\1\INPUT1.txt');
Stream.Position := 0;
html.Text := Stream.ReadString(stream.Size);
Memo1.Lines.Text := html.Text;



Добавляю:
Код HTML:
var
s:AnsiString;
...
s := UTF8ToString(html.Text);
html.Text := s;
Memo1.Lines.Text := html.Text;
Русские символы появились, но не все, проблемное место осталось не читаемым. Подскажите пожалуйста как исправить. Delphi xe3
Спасибо.


Последний раз редактировалось FLIER; 11.11.2014 в 11:49.
FLIER вне форума Ответить с цитированием
Старый 10.11.2014, 22:42   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Попробуйте UTF8Encode, Decode
Человек_Борща вне форума Ответить с цитированием
Старый 10.11.2014, 23:12   #3
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

в indy HTTPClient помогло с кодировкой
Код:
IdHTTP1.Request.ContentType := 'charset=windows-1251'; // или нужную кодировку
указывается перед выполнением запроса
так же можно добавить формат данных ожидаемых, тогда будет так:
Код:
IdHTTP1.Request.ContentType := 'text/html; charset=windows-1251';
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 10.11.2014, 23:35   #4
xxbesoxx
Участник клуба
 
Аватар для xxbesoxx
 
Регистрация: 10.08.2010
Сообщений: 1,392
По умолчанию

Цитата:
Добавляю:
Код HTML:

var
s:AnsiString;
...
s := UTF8ToString(html.Text);
html.Text := s;
Memo1.Lines.Text := html.Text;
Ошибка в s:AnsiString; попробуй s: UTF8String;
Код:
var
  s: UTF8String;
...
	s := UTF8ToString(html.Text);
	html.Text := s;
	Memo1.Lines.Text := html.Text;
xxbesoxx вне форума Ответить с цитированием
Старый 11.11.2014, 10:25   #5
FLIER
Пользователь
 
Регистрация: 28.12.2007
Сообщений: 39
По умолчанию

Цитата:
Сообщение от VIK_aka_TOR Посмотреть сообщение
IdHTTP1.Request.ContentType := 'charset=windows-1251'; // или нужную кодировку
Сервер все равно отправляет utf-8

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Ошибка в s:AnsiString; попробуй s: UTF8String;
Не помогло.

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Попробуйте UTF8Encode, Decode
Спасибо за наводку. Cервер у себя сохраняет переданные данные. Закодировал перед отправкой и все получилось

Последний раз редактировалось FLIER; 11.11.2014 в 12:04.
FLIER вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реально ли перевести UTF-16 в UTF-8, если да то как? FleXik Общие вопросы Delphi 7 28.09.2014 12:11
Знаки зодиака shilovec5377 JavaScript, Ajax 1 20.01.2012 22:05
Преобразовние Utf-16 <=> Utf-8 hard-t Общие вопросы C/C++ 1 26.08.2011 13:54
Знаки транскрипции sagitron Microsoft Office Word 6 01.08.2011 14:51
Ansi в UTF-8 и наоборот UTF-8 в Ansi Alar Работа с сетью в Delphi 3 09.12.2010 17:02