Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Кроказябры в Post-Запросе.


Страницы:   1 2

Иван Д. ©   (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-го случая?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо