AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi UTF-8 php MySQL - Problem ä ö ü
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi UTF-8 php MySQL - Problem ä ö ü

Ein Thema von luisk · begonnen am 3. Jun 2016 · letzter Beitrag vom 4. Jun 2016
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#1

Delphi UTF-8 php MySQL - Problem ä ö ü

  Alt 3. Jun 2016, 10:17
Hallo,
ich will daten über php in MySQL speichern.
Wie kann ich dt-Umlaute (äöü..) konvertieren ?
hab´s über  str := UTF8encode (str); probiert.
Klappt aber nicht.

Die Datenbank und die Tabellen habe ich nach utf-8 umgestellt.
Das Schreiben von php in MySQL stellt die dt-Umlaute richtig dar.

Was muss man bei Delphi noch beachten ?
(Delphi 10 Seattle)

Geändert von luisk ( 3. Jun 2016 um 11:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Delphi UTF-8 php MySQL - Problem ä ö ü

  Alt 3. Jun 2016, 11:24
Klappt aber nicht.
Als was werden die Umlaute denn gespeichert?
Daß Du zur Anzeige einen Font nutzt der Umlaute anzeigen kann, setze ich mal als selbstverständlich voraus.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#3

AW: Delphi UTF-8 php MySQL - Problem ä ö ü

  Alt 3. Jun 2016, 11:39
ich habe hier mal einen File-Output über php des SQL-Strings, der von Delphi kommt:
 s_SQL := UTF8encode (s_SQL);
Geöffnet über Wordpad:
UPDATE t_1 SET Beschreibung = 'läöük'  WHERE `pk` = 4
Geöffnet über Nodepad ( Kodierung utf-8 ohne BOM )
UPDATE t_1 SET Beschreibung = 'lהצk'  WHERE `pk` = 4

Geändert von luisk ( 3. Jun 2016 um 11:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Delphi UTF-8 php MySQL - Problem ä ö ü

  Alt 3. Jun 2016, 12:17
Ich hab mich da wohl nicht genau genug ausgedrückt.
Interessant sind die HEX-Werte. (Dez oder Octal geht auch, wäre mir aber zu umständlich)
Alles andere ist bereits interpretiert.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#5

AW: Delphi UTF-8 php MySQL - Problem ä ö ü

  Alt 3. Jun 2016, 13:28
so sieht der Hex-Code aus sowohl vor als auch nach UTF8encode(l_string_SQL);

l ä ö ü k = 6C E4 F6 FC 6B Standard ASCII
das bedeutet UTF8encode( ) ändert nichts.
Da fehlt wohl noch eine Einstellung.

hab den Rückgabestring als UTF8String deklariert - bringt auch noch nichts:
Delphi-Quellcode:
var
l_UTF8String_SQL : UTF8String;
l_string_SQL:string;


l_UTF8String_SQL := UTF8encode (l_string_SQL);

Geändert von luisk ( 3. Jun 2016 um 14:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Delphi UTF-8 php MySQL - Problem ä ö ü

  Alt 3. Jun 2016, 15:04
Deinen Ausführungen entnehme ich das dein Delphi String als Ansistring interpretiert.
versuch doch mal folgende Eingabe 'lä'#$c3#$bc'üök'. Ich bin gespannt was die DB zurück liefert.
(xC3xBC ist ü in UTF8-Kodierung)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#7

AW: Delphi UTF-8 php MySQL - Problem ä ö ü

  Alt 3. Jun 2016, 15:27
ich hab jetzt den String
C3 BC
an php geschickt und dann weiter an Mysql

so sieht der SQL-String aus, den PHP an MySQL gegeben hat:
2055504441544520745F696E7370656B74696F6E737479705F 312053455420426573636872656962756E675F32203D2027
C3 BC
27202057484552452060706B60203D2032

in MySQL wird "ü" dargestellt -> MySQL stellt utf-8 dar.
Die Frage ist, wie kann ich einen Delphi-string in utf-8 konvertieren ?

wenn ich 6C E4 C3 BC FC F6 6B sende, dann wird nur das l dargestellt
wenn ich ''#$c3#$bc#$c3#$bc#$c3#$bc'' sende, wird 'üüü' in MySQL dargestellt
wenn ich ''#$4c#$c3#$84#$c3#$96#$c3#$bc'' sende , wird 'LÄÖü' in MySQL dargestellt
http://www.utf8-zeichentabelle.de/
wie sieht nun die Konvertierungsroutine in Delphi aus, oder sollte man die selber schreiben ?

Geändert von luisk ( 3. Jun 2016 um 15:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Delphi UTF-8 php MySQL - Problem ä ö ü

  Alt 3. Jun 2016, 16:07
Wenn meine Vermutung bzgl. string richtig war, solltest Du mit AnsiToUtf8 das bekommen was Du brauchst.
(Gewöhn Dir nach Möglichkeit an String nur dort zu verwenden wo es nur auf den enthaltenen Text ankommt. Werden die Interna benötigt (8/16Bit/UTF8) dann bitte den richtigen Typ nutzen!

Dann ist die Suche nach den Fehlerursachen ein wenig einfacher.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#9

AW: Delphi UTF-8 php MySQL - Problem ä ö ü

  Alt 3. Jun 2016, 16:42
Wenn meine Vermutung bzgl. string richtig war, solltest Du mit AnsiToUtf8 das bekommen was Du brauchst.
(Gewöhn Dir nach Möglichkeit an String nur dort zu verwenden wo es nur auf den enthaltenen Text ankommt. Werden die Interna benötigt (8/16Bit/UTF8) dann bitte den richtigen Typ nutzen!

Dann ist die Suche nach den Fehlerursachen ein wenig einfacher.

Gruß
K-H
sorry, aber Ansitoutf8 funktioniert auch nicht.
Hast Du es mal getestet ?

Die Umkehrfunktion Utf8ToAnsi() geht allerdings.

Gruß Luis

Geändert von luisk ( 3. Jun 2016 um 17:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Delphi UTF-8 php MySQL - Problem ä ö ü

  Alt 4. Jun 2016, 00:21
Ist ein wenig gebastelt aber es funktioniert:
Delphi-Quellcode:
type
  ta = array [1..1024] of byte;

var
  pa: ^ta;
  i : integer;
  s : utf8string;
begin
  s:=ansitoutf8(edit1.Text);
  pa:=addr(s[1]);
  edit2.Text:='';
  if length(s)<512 then
  for i:=1 to length(s)*2 do
  edit2.Text:=edit2.Text+inttohex(pa^[i],2)+' ';
end;
0üöä9 ist:
30 C3 BC C3 B6 C3 A4 39 00 ......

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz