Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2017.07.30;
Скачать: [xml.tar.bz2];

Вниз

Кроказябры в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.002 c
3-1314215120
MikeZ
2011-08-24 23:45
2017.07.30
Несколько запросов подряд


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


2-1441605362
Иван Д.
2015-09-07 08:56
2017.07.30
Кроказябры в Post-Запросе.


15-1462560299
Inovet
2016-05-06 21:44
2017.07.30
С Днём Радио!


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский