Einzelnen Beitrag anzeigen

fehlerchen

Registriert seit: 2. Dez 2018
3 Beiträge
 
Delphi XE7 Professional
 
#1

Hindi-String in FB-Datenbank?

  Alt 3. Dez 2018, 16:52
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?
  Mit Zitat antworten Zitat