![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Кроказябры в Post-Запросе.
Иван Д. © (2015-09-07 08:56:00)Есть база данных 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, чтобы решить проблему?
Заранее спасибо!
(2015-10-20 19:15:00) [1]Удалено модератором
(2015-10-20 19:12:00) [2]Удалено модератором
(2015-10-20 18:42:00) [3]Удалено модератором
Иван Д. (2015-09-12 05:20:00) [4]Ответ нашелся здесь: http://www.foxbase.ru/delphi/indy-tidhttppost-i-russkie-simvoly-v-parametrakh-zaprosa.htm
кгшзх (2015-09-11 22:04:00) [5]какая кодировка в базе - вообще по барабану.
про нее вообще не спрашивалось
Иван Д. (2015-09-11 21:46:00) [6]В базе данных кодировка cp1251_general_ci
Единственная строка в php, отвечающая за кодировку - mysql_query("SET NAMES cp1251");
кгшзх (2015-09-11 21:37:00) [7]щас тебя спросят в какой кодировке приходят данные в пхп.
какой чарсет используется при подключении к базе из похапе....
на что ты скажешь, что не знаю, не имею доступа, мне не говорили.....
ну и смысл спрашивать было?
Иван Д. (2015-09-11 21:09:00) [8]Еще одна проблемка: когда ведется запись в базу данных, как сделать, чтобы Str.Text было бы что ли AnsiString, а не String, так как нижеуказанный код пишет в базу кроказябры:
Var Str:TStringList;
Str:=TStringList.Create();
Str.Text:='здесь есть русские буквы';
sStream := TStringStream.Create;
IdHTTP1.Post(Url,Str,sStream);
Иван Д. (2015-09-09 19:27:00) [9]кгшзх, огромное спасибо! Всё заработало!
кгшзх (2015-09-08 20:52:00) [10]sStream := TStringStream.Create;
IdHTTP1.Post(Url,Str,sStream);
ShowMessage(sStream.DataString);
Иван Д. (2015-09-08 19:32:00) [11][4] для меня непонятно. Прошу привести более подробный пример кода, если можно.
кгшзх (2015-09-08 17:03:00) [12]внутри [4] сказано как.
Иван Д. (2015-09-08 16:51:00) [13]Как?
кгшзх (2015-09-08 12:39:00) [14]молодец.
осталось сказать про это своему идшттп
Иван Д. (2015-09-08 11:09:00) [15]Кстати, кодировка, возвращаемого текста php-скриптом windows-1251.
Иван Д. (2015-09-08 11:07:00) [16]>Ни один из двух нижеуказанных вариантов не помог.
Вы о чем?
sniknik (2015-09-08 01:51:00) [17]> просто я точно не знаю, какой из двух вариантов правильный
ну так выясни... получи в одной, читается? получи в другой, а так? правильный будет тот в котором получишь осмысленный текст. © кэп.
Иван Д. (2015-09-07 18:56:00) [18]Сервер не имеет выбор, просто я точно не знаю, какой из двух вариантов правильный, не имею доступа к 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-07 18:40:00) [19]IdHTTP1.Request.AcceptCharSet := 'windows-1251';
раз сервер имеет выбор, то просто указать нужное, и не париться.
Иван Д. (2015-09-07 17:48:00) [20]Данные приходят либо 1) в формате UTF8, либо 2) Ansi. Не подскажете более подробно, какой нужен код как для 1-го так и для 2-го случая?