Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.07.30;
Скачать: CL | DM;

Вниз

Кроказябры в Post-Запросе.   Найти похожие ветки 

 
Иван Д.   (2015-09-07 08:56) [0]

Есть база данных MySQL в которой хранятся, в частности, русскоязычные записи, кодировка - cp1251_general_ci. Есть php-скрипт, через который Delphi-программа считывает данные с БД. Сама Delphi-программа делает запрос так:
Var Str:TStringList;
   Url:String;
   S:String;
S:= IdHTTP1.Post(Url,Str);
Memo1.Lines.Add(S);

На Delphi7 все работало нормально, в Memo1 выводились русские буквы. На Delphi XE5 вместо русских букв видны кроказябры. Что нужно изменить в коде Delphi XE5, чтобы решить проблему?
Заранее спасибо!


 
sniknik ©   (2015-09-07 09:47) [1]

для начала AnsiString везде поставь (раз на D7 работала то логично, что там не юникод)


 
Иван Д.   (2015-09-07 09:53) [2]

Var Str:TStringList;
  Url:AnsiString;
  S:AnsiString;
S:= IdHTTP1.Post(Url,Str);
Memo1.Lines.Add(S);

Результат не изменился.


 
кгшзх ©   (2015-09-07 10:08) [3]

смотри в какой кодировке приходят данные из похапе


 
кгшзх ©   (2015-09-07 10:23) [4]

а потом смотри на изменившийся пост

   function Post(AURL: string; const ASourceFile: String
     {$IFDEF STRING_IS_ANSI}; ADestEncoding: IIdTextEncoding = nil{$ENDIF}
     ): string; overload;


 
Иван Д.   (2015-09-07 10:26) [5]

Спасибо, попробую разобраться!


 
Иван Д.   (2015-09-07 17:48) [6]

Данные приходят либо 1) в формате UTF8, либо 2) Ansi. Не подскажете более подробно, какой нужен код как для 1-го так и для 2-го случая?


 
sniknik ©   (2015-09-07 18:40) [7]

IdHTTP1.Request.AcceptCharSet := "windows-1251";
раз сервер имеет выбор, то просто указать нужное, и не париться.


 
Иван Д.   (2015-09-07 18:56) [8]

Сервер не имеет выбор, просто я точно не знаю, какой из двух вариантов правильный, не имею доступа к php-скрипту. Ни один из двух нижеуказанных вариантов не помог:


Var Str:TStringList;
     Url:AnsiString;
     S:AnsiString;
IdHTTP1.Request.AcceptCharSet:="windows-1251";
S:= IdHTTP1.Post(Url,Str);
Form1.Caption:=S;



Var Str:TStringList;
     Url:AnsiString;
     S:AnsiString;
IdHTTP1.Request.AcceptCharSet:="utf-8";
S:= IdHTTP1.Post(Url,Str);
Form1.Caption:=S;


 
sniknik ©   (2015-09-08 01:51) [9]

> просто я точно не знаю, какой из двух вариантов правильный
ну так выясни... получи в одной, читается? получи в другой, а так? правильный будет тот в котором получишь осмысленный текст. © кэп.


 
Иван Д.   (2015-09-08 11:07) [10]

>Ни один из двух нижеуказанных вариантов не помог.
Вы о чем?


 
Иван Д.   (2015-09-08 11:09) [11]

Кстати, кодировка, возвращаемого текста php-скриптом windows-1251.


 
кгшзх ©   (2015-09-08 12:39) [12]

молодец.
осталось сказать про это своему идшттп


 
Иван Д.   (2015-09-08 16:51) [13]

Как?


 
кгшзх ©   (2015-09-08 17:03) [14]

внутри [4] сказано как.


 
Иван Д.   (2015-09-08 19:32) [15]

[4] для меня непонятно. Прошу привести более подробный пример кода, если можно.


 
кгшзх ©   (2015-09-08 20:52) [16]

sStream := TStringStream.Create;
IdHTTP1.Post(Url,Str,sStream);
ShowMessage(sStream.DataString);


 
Иван Д.   (2015-09-09 19:27) [17]

кгшзх, огромное спасибо! Всё заработало!


 
Иван Д.   (2015-09-11 21:09) [18]

Еще одна проблемка: когда ведется запись в базу данных, как сделать, чтобы Str.Text было бы что ли AnsiString, а не String, так как нижеуказанный код пишет в базу кроказябры:


Var Str:TStringList;
Str:=TStringList.Create();
Str.Text:="здесь есть русские буквы";
sStream := TStringStream.Create;
IdHTTP1.Post(Url,Str,sStream);


 
кгшзх ©   (2015-09-11 21:37) [19]

щас тебя спросят в какой кодировке приходят данные в пхп.
какой чарсет используется при подключении к базе из похапе....

на что ты скажешь, что не знаю, не имею доступа, мне не говорили.....

ну и смысл спрашивать было?


 
Иван Д.   (2015-09-11 21:46) [20]

В базе данных кодировка cp1251_general_ci
Единственная строка в php, отвечающая за кодировку - mysql_query("SET NAMES cp1251");


 
кгшзх ©   (2015-09-11 22:04) [21]

какая кодировка в базе - вообще по барабану.
про нее вообще не спрашивалось


 
Иван Д.   (2015-09-12 05:20) [22]

Ответ нашелся здесь: http://www.foxbase.ru/delphi/indy-tidhttppost-i-russkie-simvoly-v-parametrakh-zaprosa.htm


 
имя   (2015-10-20 18:42) [23]

Удалено модератором


 
имя   (2015-10-20 19:12) [24]

Удалено модератором


 
имя   (2015-10-20 19:15) [25]

Удалено модератором



Страницы: 1 вся ветка

Текущий архив: 2017.07.30;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.004 c
15-1462560299
Inovet
2016-05-06 21:44
2017.07.30
С Днём Радио!


3-1314215120
MikeZ
2011-08-24 23:45
2017.07.30
Несколько запросов подряд


15-1464298202
Юрий
2016-05-27 00:30
2017.07.30
С днем рождения ! 27 мая 2016 пятница


15-1464435460
pavelnk
2016-05-28 14:37
2017.07.30
Что это было?


15-1464261672
ВладОшин
2016-05-26 14:21
2017.07.30
Сломал Indy в рабочей Delphi6. Починить не получилось