![]() |
Delphi UTF-8 php MySQL - Problem ä ö ü
Hallo,
ich will daten über php in MySQL speichern. Wie kann ich dt-Umlaute (äöü..) konvertieren ? hab´s über
Delphi-Quellcode:
probiert.
str := UTF8encode (str);
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) |
AW: Delphi UTF-8 php MySQL - Problem ä ö ü
Zitat:
Daß Du zur Anzeige einen Font nutzt der Umlaute anzeigen kann, setze ich mal als selbstverständlich voraus. Gruß K-H |
AW: Delphi UTF-8 php MySQL - Problem ä ö ü
ich habe hier mal einen File-Output über php des SQL-Strings, der von Delphi kommt:
Delphi-Quellcode:
s_SQL := UTF8encode (s_SQL);
Geöffnet über Wordpad:
Delphi-Quellcode:
UPDATE t_1 SET Beschreibung = 'läöük' WHERE `pk` = 4
Geöffnet über Nodepad ( Kodierung utf-8 ohne BOM )
Delphi-Quellcode:
UPDATE t_1 SET Beschreibung = 'lהצk' WHERE `pk` = 4
|
AW: Delphi UTF-8 php MySQL - Problem ä ö ü
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 |
AW: Delphi UTF-8 php MySQL - Problem ä ö ü
so sieht der Hex-Code aus sowohl vor als auch nach UTF8encode(l_string_SQL);
Delphi-Quellcode:
Standard ASCII
l ä ö ü k = 6C E4 F6 FC 6B
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); |
AW: Delphi UTF-8 php MySQL - Problem ä ö ü
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 |
AW: Delphi UTF-8 php MySQL - Problem ä ö ü
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 ![]() wie sieht nun die Konvertierungsroutine in Delphi aus, oder sollte man die selber schreiben ? |
AW: Delphi UTF-8 php MySQL - Problem ä ö ü
Wenn meine Vermutung bzgl.
Delphi-Quellcode:
richtig war, solltest Du mit
string
Delphi-Quellcode:
das bekommen was Du brauchst.
AnsiToUtf8
(Gewöhn Dir nach Möglichkeit an
Delphi-Quellcode:
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!
String
Dann ist die Suche nach den Fehlerursachen ein wenig einfacher. Gruß K-H |
AW: Delphi UTF-8 php MySQL - Problem ä ö ü
Zitat:
Hast Du es mal getestet ? Die Umkehrfunktion Utf8ToAnsi() geht allerdings. Gruß Luis |
AW: Delphi UTF-8 php MySQL - Problem ä ö ü
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;
Delphi-Quellcode:
ist:
0üöä9
Delphi-Quellcode:
......
30 C3 BC C3 B6 C3 A4 39 00
Gruß K-H |
AW: Delphi UTF-8 php MySQL - Problem ä ö ü
ok, Danke
dieses Beispiel hab auch probiert und es geht. Bei meine Anwendung klappt es allerdings nicht. Ich sammle den großen String aus einem Stringgrid zusammen. Ich muss mal einen Test in einem kleinen Projekt machen und konsequent auf ansistring setzen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 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