Hallo,
mir will es nicht gelingen, einen String aus Hindi-Worten in einer Firebird-Datenbank abzuspeichern.
Wenn ich die Zeichenkette
प्रभावित व्यक्ति को ताजा हवा में निकालें और अनियंत्रित श्वास की अनुमति दें।
direkt in ibExpert in ein String- oder UTF8- Datenbankfeld schreibe, wird dieses geschrieben als
पà¥à¤°à¤*ावित वà¥à¤¯à¤•à¥à¤¤à¤¿ को ताजा हवा में निकालें और अनियंतà¥à¤°à¤¿à¤¤ शà¥à¤µà¤¾à¤¸ की अनà¥à¤®à¤¤à¤¿ दें।
Diese Zeichenkette kann dann auch als RawByteString von Delphi aus in die Datenbank geschrieben werden.
Aber wie kann ich ihn mir selbst in Delphi aus dem originalen Hindi-String erzeugen, um die Datenbank zu befüllen?
Ein ähnlicher, aber nicht gleicher RawByteString ist folgendermaßen erzeugbar:
TmpTestString := 'प्रभावित व्यक्ति को ताजा हवा में निकालें और अनियंत्रित श्वास की अनुमति दें।'; // die Darstellung im Delphi-Text zeigt seltsame Darstellung mit zusätzlichen Abständen zwischen den Worten, die mir nicht erklärlich sind. - Kann man Delphi Optionen mitgeben, die bewirken, dass in der Delphi
ide ebenso, wie hier im Forum dargestellt wird - mit nur einem Leerzeichen zwischen den Worten?
TmpRawByteString := Utf8Encode(TmpTestString);
SetCodePage(TmpRawByteString, 28591, False);
ATable.FieldByName(dq_Text).AsString := TmpRawByteString;
ATable.FieldByName(dq_TextUtf8).AsString := TmpRawByteString; // wirft Fehler malformed String -303
Der andere Weg, den Hindi-String direkt per Delphi in die Datenbank zu schreiben, führt beim UTF8-Feld zum Fehler 'Malformed String'.
Was muss ich denn beachten, damit ich auf einer gewachsenen Firebird-Datenbank mit ursprünglich charset NONE ohne MalformedString-Fehler zu arbeiten?
Zugegriffen wird auf die Datenbank mittels...:
object TheConnection: TFDConnection
Params.Strings = (
'Server=192....'
'Database=/....fdb'
'SQLDialect=1'
'Protocol=TCPIP'
'User_Name=...'
'Password=...'
'DriverID=
FB'
'CharacterSet=UTF8')
Muss das CharacterSet noch anderswo oder anders gesetzt werden?