Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   idhttp.get und griechische buchstaben (https://www.delphipraxis.net/192721-idhttp-get-und-griechische-buchstaben.html)

stathis 13. Mai 2017 19:49

idhttp.get und griechische buchstaben
 
hallo
ich verwende Delhi xe8 und ich moechte griechische charakter in Databank importieren aber wirt immer als ?????? importiert

DELPHI CODE:
function MultiplyTwoNumbers(a,b: string):string;
var url,key: string;
H: TIdHttp;
SS: TStringStream;
begin
// Prepare the URL
key:='MEINPASSWORT123';
a := utf8decode(a);
url := 'http://-----------------------/test.php?T1=' + a +'&key='+key;
H := TIdHttp.Create(nil);
try
SS := TStringStream.Create('', TEncoding.UTF8);
try

form1.IdHTTP1.get(url, SS);
Result := SS.DataString;
finally SS.Free;
end;
finally H.Free;
end;
end;


************************************************** **********************
PHP CODE:
<?php


define("KEY","MEINPASSWORT123");
define('DB_SERVER',"localhost");
define('DB_NAME',"*************");
define('DB_USER',"*************");
define('DB_PASSWORD',"*************");

$conn = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD);

mysql_select_db(DB_NAME, $conn);
mysql_query("SET NAMES 'utf8'", $conn);
mysql_query("SET CHARACTER SET 'utf8'", $conn);

//include("db.php");
if(isset($_GET['key']))
{
if($_GET['key'] == KEY)
{
if(isset($_GET['T1']))
{

$T1 = mysql_real_escape_string($_GET['T1']);
$T2 = mysql_real_escape_string($_GET['T2']);


$result = mysql_query("INSERT INTO test(onoma)
VALUES('".$T1."') ") or die(mysql_error());

if(mysql_affected_rows() == 1)
{
$result = "αποθυκευτικε";
} else $result = "Error MySQL-Datenbank";
} else $result = "Error1";
} else $result = "Error2";
} else $result = "Error3";
print_r($T1);
?>

************************************************** *********************
mit obere functionen werden dir griechiscge zeichen als ????????????? in Datenbank eingetragen?
ich bit um hilfe?

danke

Bernhard Geyer 14. Mai 2017 08:39

AW: idhttp.get und griechische buchstaben
 
Ich tippe darauf das die fehlende URL-Encoding das Problem darstellt: https://de.wikipedia.org/wiki/URL-Encoding
UTF8 alleine reicht nicht.

himitsu 14. Mai 2017 09:18

AW: idhttp.get und griechische buchstaben
 
Pssst, ich will ja nichts sagen, aber du hättest in deinem alten Thema auch gern weitermachen können :zwinker:
http://www.delphipraxis.net/173908-g...und-mysql.html

HolgerX 14. Mai 2017 11:40

AW: idhttp.get und griechische buchstaben
 
Hmm..

Hatte da auch mit PHP und IDHttp experimentiert..

Alle Parameter hinter dem ? in der URL müssen speziell codiert sein, gerade bei Sonderzeichen..

Besser die Daten mit Post, statt mit Get an das PHP-Script übergeben, da ist mehr möglich ;)

stathis 14. Mai 2017 14:27

AW: idhttp.get und griechische buchstaben
 
Zitat:

Zitat von himitsu (Beitrag 1371323)
Pssst, ich will ja nichts sagen, aber du hättest in deinem alten Thema auch gern weitermachen können :zwinker:
http://www.delphipraxis.net/173908-g...und-mysql.html

Mein alte Thema war nicht mit idhttp und ich habe auch kein Lösung gefunden und ich versuche jetzt mit idhttp und PHP?

stathis 14. Mai 2017 14:29

AW: idhttp.get und griechische buchstaben
 
Zitat:

Zitat von HolgerX (Beitrag 1371334)
Hmm..

Hatte da auch mit PHP und IDHttp experimentiert..

Alle Parameter hinter dem ? in der URL müssen speziell codiert sein, gerade bei Sonderzeichen..

Besser die Daten mit Post, statt mit Get an das PHP-Script übergeben, da ist mehr möglich ;)

Ich danke für die Antwort
Wie mache ich es mit Post ?
Ich habe mit Post auch versucht aber immer wieder die ??????

Luckie 14. Mai 2017 14:30

AW: idhttp.get und griechische buchstaben
 
Welcher Zeichensatz wird denn von der Datenbank verwendet?

stathis 14. Mai 2017 14:46

AW: idhttp.get und griechische buchstaben
 
Zitat:

Zitat von luckie (Beitrag 1371354)
welcher zeichensatz wird denn von der datenbank verwendet?

utf-8

SneakyBagels 14. Mai 2017 14:47

AW: idhttp.get und griechische buchstaben
 
Ich habe keine Ahnung ob es daran liegen kann. Aber lass doch mal den ganzen Streamquatsch weg und speichere mit IdHTTP Get direkt in eine Stringvariable.

stathis 14. Mai 2017 14:52

AW: idhttp.get und griechische buchstaben
 
[QUOTE=stathis;1371355]
Zitat:

Zitat von luckie (Beitrag 1371354)
welcher zeichensatz wird denn von der datenbank verwendet?

Server: Localhost via UNIX socket
Server-Typ: MySQL
Server-Version: 5.5.54-cll - MySQL Community Server (GPL)
Protokoll-Version: 10
Benutzer:
Server-Zeichensatz: UTF-8 Unicode (utf8)

SneakyBagels 14. Mai 2017 14:54

AW: idhttp.get und griechische buchstaben
 
Das hast du doch oben schon einmal geschrieben. Probier doch mal den nutzlosen Stream wegzulassen.

stathis 14. Mai 2017 14:59

AW: idhttp.get und griechische buchstaben
 
Zitat:

Zitat von SneakyBagels (Beitrag 1371359)
Das hast du doch oben schon einmal geschrieben. Probier doch mal den nutzlosen Stream wegzulassen.

aber wie???
hast du ein klein Code?

SneakyBagels 14. Mai 2017 15:02

AW: idhttp.get und griechische buchstaben
 
Na so. Einfach den ganzen Stream weg und
Delphi-Quellcode:
Result := form1.IdHTTP1.get(url);
Guck dir in der Codevervollständigung doch mal an was du angezeigt bekommst. Scheint mir nämlich so, als hättest du deinen Code aus Beitrag 1 irgendwo kopiert aber nicht verstanden :P

nahpets 14. Mai 2017 15:05

AW: idhttp.get und griechische buchstaben
 
Eventuell Literatur zum Thema?

Zeichenkodierung MySQL

Supported Character Sets and Collations

Not able to insert data using greek symbols

Im Zusammenhang von Infos aus erstem und zweitem Link:
SQL-Code:
CREATE TABLE table_name ( 
id INT(11) NOT NULL,
column_name VARCHAR(50) CHARACTER SET utf8 COLLATE greek_general_ci NOT NULL
)
Ohne Stream?
Delphi-Quellcode:
Result := form1.IdHTTP1.get(url);

stathis 14. Mai 2017 15:09

AW: idhttp.get und griechische buchstaben
 
Zitat:

Zitat von SneakyBagels (Beitrag 1371362)
Na so. Einfach den ganzen Stream weg und
Delphi-Quellcode:
Result := form1.IdHTTP1.get(url);
Guck dir in der Codevervollständigung doch mal an was du angezeigt bekommst. Scheint mir nämlich so, als hättest du deinen Code aus Beitrag 1 irgendwo kopiert aber nicht verstanden :P

:thumb:Du hast Recht ich habe seit ein Woche mit idhttp zu tun,
und ich versuche es zu lernen.

Das Result von PHP bekomme ich normal zurueck die Griechische Buchstaben werden normal in Delphi angezeigt.
Aber wenn ich daten mit idhttp.get zu php sende, damit diese Daten in Datenbank importiert werden, die werden in Datenbank als ???????????? angezeigt.


Danke

nahpets 14. Mai 2017 15:18

AW: idhttp.get und griechische buchstaben
 
Schau Dir mal den Unterschied zwischen Get und Post an: https://www.w3schools.com/tags/ref_httpmethods.asp

Zitat:

Zitat von w3schools.com
Two HTTP Request Methods: GET and POST

Two commonly used methods for a request-response between a client and server are: GET and POST.

GET - Requests data from a specified resource
POST - Submits data to be processed to a specified resource

Und dann schaumal, was man mit
Delphi-Quellcode:
idHTTP.Post
machen kann.

SneakyBagels 14. Mai 2017 15:19

AW: idhttp.get und griechische buchstaben
 
Zitat:

Aber wenn ich daten mit idhttp.get zu php sende, damit diese Daten in Datenbank importiert werden, die werden in Datenbank als ???????????? angezeigt.
Dafür benutzt man aber nicht Get sondern Post. Du schreibst die zu importierenden Daten in eine Stringlist und übergibst die an Post.

stathis 14. Mai 2017 15:24

AW: idhttp.get und griechische buchstaben
 
Zitat:

Zitat von nahpets (Beitrag 1371366)
Schau Dir mal den Unterschied zwischen Get und Post an: https://www.w3schools.com/tags/ref_httpmethods.asp

Zitat:

Zitat von w3schools.com
Two HTTP Request Methods: GET and POST

Two commonly used methods for a request-response between a client and server are: GET and POST.

GET - Requests data from a specified resource
POST - Submits data to be processed to a specified resource

Und dann schaumal, was man mit
Delphi-Quellcode:
idHTTP.Post
machen kann.

Ok danke
ich habe ich schon.
Ich versuche ich es mit Post.

stathis 14. Mai 2017 15:25

AW: idhttp.get und griechische buchstaben
 
Zitat:

Zitat von SneakyBagels (Beitrag 1371367)
Zitat:

Aber wenn ich daten mit idhttp.get zu php sende, damit diese Daten in Datenbank importiert werden, die werden in Datenbank als ???????????? angezeigt.
Dafür benutzt man aber nicht Get sondern Post. Du schreibst die zu importierenden Daten in eine Stringlist und übergibst die an Post.

danke
Ich habe es
Ich versuche mit Post

SneakyBagels 14. Mai 2017 15:29

AW: idhttp.get und griechische buchstaben
 
Denk dran, dass dein PHP-Script dann auch mit $_POST statt $_GET reagieren muss.

himitsu 14. Mai 2017 15:39

AW: idhttp.get und griechische buchstaben
 
Es gibt nicht nur eine Stelle für das Encoding.

Für jedes Feld,
die Standardvorgabe für die DB,
das Encoding der Connection
und zuletzt auch die Codierung der lokalen Strings, bzw. die Übergabe an die DB-Komponenten.

stathis 16. Mai 2017 18:14

AW: idhttp.get und griechische buchstaben
 
:-D Ich danke alleeeeee


Und die Loesung:
**********DELPHI****************
procedure TForm3.Button2Click(Sender: TObject);
var
lHTTP: TIdHTTP;
lParamList: TStringList;
result,key,a : string;
begin
lParamList := TStringList.Create;
lParamList.Add('T1=τεστ');
lParamList.Add('key=MEINPASSWORT123');

lHTTP := TIdHTTP.Create(nil);
try
Result := lHTTP.Post('http://........../test.php', lParamList);
finally
lHTTP.Free;
lParamList.Free;
end;
ShowMessage(result);
end;

***********PHP******************

<?php
header("Content-Type: text/html; charset=UTF-8");

define("KEY","MEINPASSWORT123");
define('DB_SERVER',"localhost");
define('DB_NAME',"????????????");
define('DB_USER',"???????????");
define('DB_PASSWORD',"??????????????");

$conn = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD);

mysql_select_db(DB_NAME, $conn);
mysql_query("SET NAMES 'utf8_general_ci'", $conn);
mysql_query("SET CHARACTER SET 'utf8_general_ci'", $conn);
$T1 = $_POST["T1"];
$T2 = $_POST["name"];
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");

if(isset($_POST['key']))
{
if($_POST['key'] == KEY)
{
if(isset($_POST['T1']))
{

$result = mysql_query("INSERT INTO test(onoma)
VALUES('".$T1."') ") or die(mysql_error());

if(mysql_affected_rows() == 1)
{
$result = "αποθηκεύτηκε";
} else $result = "Error MySQL-Datenbank";
} else $result = "Error1";
} else $result = "Error2";
} else $result = "Error3";
echo "WWW Result:".$result;
?>

**************************************************

SneakyBagels 16. Mai 2017 18:29

AW: idhttp.get und griechische buchstaben
 
Zitat:

} else $result = "Error MySQL-Datenbank";
} else $result = "Error1";
} else $result = "Error2";
} else $result = "Error3";
Der Käse ab Error1 kann weg.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz