![]() |
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 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