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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2011, 20:33   #1
)Игнат(
Форумчанин
 
Регистрация: 06.01.2008
Сообщений: 180
По умолчанию Проблема c кодировкой delphi2010

Здравствуйте.
Простите за тупой, возможно повторяющийся вопрос.
Суть проблемы:
Есть текст в кодировке UTF8
Его нужно перевести в кодировку win1251 и отправить на сервер, через TidHTTP с помощью MultipartFormData
Вместо кириллического текста на сервер приходит текст вроде "??????2.????"
Как такую проблему можно решить?
UTF8ToAnsi не помогает достичь результата

Последний раз редактировалось )Игнат(; 15.06.2011 в 20:37.
)Игнат( вне форума Ответить с цитированием
Старый 15.06.2011, 20:44   #2
inconnect
 
Регистрация: 15.06.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от )Игнат( Посмотреть сообщение
Здравствуйте.
Простите за тупой, возможно повторяющийся вопрос.
Суть проблемы:
Есть текст в кодировке UTF8
Его нужно перевести в кодировку win1251 и отправить на сервер, через TidHTTP с помощью MultipartFormData
Вместо кириллического текста на сервер приходит текст вроде "??????2.????"
Как такую проблему можно решить?
UTF8ToAnsi не помогает достичь результата
Попробуй-ка так IdHTTP.Request.CharSet:='utf-8';
inconnect вне форума Ответить с цитированием
Старый 15.06.2011, 21:02   #3
)Игнат(
Форумчанин
 
Регистрация: 06.01.2008
Сообщений: 180
По умолчанию

Код:
with HTTP.Request do
begin
    UserAgent:='Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1';
    Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
    AcceptLanguage:=	'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3';
    AcceptCharset:=	'windows-1251,utf-8;q=0.7,*;q=0.7';
    Connection:=	'keep-alive';
    Pragma:='no-cache';
end;
при таких настройках и получаю "подснежник"
Однако же твой совет не помог.

Последний раз редактировалось )Игнат(; 15.06.2011 в 21:06.
)Игнат( вне форума Ответить с цитированием
Старый 16.06.2011, 12:40   #4
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

function Utf8Decode и UTF8Encode помогут
Alter вне форума Ответить с цитированием
Старый 16.06.2011, 18:15   #5
)Игнат(
Форумчанин
 
Регистрация: 06.01.2008
Сообщений: 180
По умолчанию

Цитата:
Сообщение от Alter Посмотреть сообщение
function Utf8Decode и UTF8Encode помогут
Простите, можно на примере объяснить?
Спасибо.
)Игнат( вне форума Ответить с цитированием
Старый 16.06.2011, 19:52   #6
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Пример:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  Ss :TStringStream;
  Buf :string;
begin
 Button1.Enabled := False;
 Ss := TStringStream.Create;
  try
 IdHTTP1.Get(Edit1.Text, Ss);
   // HTML текст страницы
 Buf := Ss.DataString;
 if Trim(UTF8Decode(Buf)) <> '' then // просто для demo
  Buf := UTF8Decode(Buf);
 RichEdit1.Lines.Text := Buf;
  finally
 FreeAndNil(Ss);
 Button1.Enabled := True;
  end;
end;
Вообще лучше грузить получаемое в поток. С кодировками потом нет проблем. Не всегда, получая напрямую строку от Indy компонента, можно отобразить корректно текст.
Может пригодиться, если содержимое сайта сжато, это IdCompressorZLib1: TIdCompressorZLib

Последний раз редактировалось Alter; 16.06.2011 в 19:56.
Alter вне форума Ответить с цитированием
Старый 17.06.2011, 10:10   #7
)Игнат(
Форумчанин
 
Регистрация: 06.01.2008
Сообщений: 180
По умолчанию

Для моего примера:
Код:
MSGD.AddFormField('field_name','Кириллический текст'); // В Делфи он в  ЮТФ-8
Использовать:
Код:
MSGD.AddFormField('field_name',UTF8Decode('Кириллический текст')); //
Вот таким образом использовать эту функцию?
)Игнат( вне форума Ответить с цитированием
Старый 17.06.2011, 17:13   #8
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Нет, я думал, что из названия функций будет понятно, что оно делает. Поясняю:
Utf8Decode - преобразует строку формата UTF-8 к строке формата Unicode.
Utf8Encode - преобразует строку формата Unicode к строке формата UTF-8.

Последний раз редактировалось Alter; 17.06.2011 в 18:15.
Alter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с кодировкой nolz Microsoft Office Word 1 07.01.2012 22:20
Проблема с кодировкой Jafar_ SQL, базы данных 0 07.06.2011 13:06
Проблема с кодировкой Furyon PHP 3 13.04.2011 17:36
Проблема с работой с DBF под Delphi2010 krokus_st Общие вопросы Delphi 1 19.02.2011 08:40
Проблема с кодировкой feniks65 Паскаль, Turbo Pascal, PascalABC.NET 13 06.01.2009 11:00