Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi FB: Einfügen von Umlauten in ein VarChar Feldtyp... Wie? (https://www.delphipraxis.net/118828-fb-einfuegen-von-umlauten-ein-varchar-feldtyp-wie.html)

juergen 15. Aug 2008 17:59

Datenbank: Firebird • Version: 2.1 • Zugriff über: IBExpert

FB: Einfügen von Umlauten in ein VarChar Feldtyp... Wie?
 
Hallo zusammen,

per SQL-Sript füge ich Datensätze (DS) ein.
Jedoch werden DS mit Umlaute(n) nicht übernommen. :gruebel:

Ein einzufügender DS sieht z.B. folgendermaßen aus:
SQL-Code:
INSERT INTO geodb_textdata VALUES(106,500100002,'ÖSTERREICH','de',1,1,null,null,'3000-01-01',300500000);
Fehlermeldung:
Zitat:

Error Message:
----------------------------------------
Invalid token.
Malformed string.
Der Feldtyp ist als "VarChar" deklariert mit Zeichensatz UTF-8...
Ich hatte nun angenommen, dass durch die Verwendung dieses Zeichensatzes auch Umlaute eingefügt werden können.

Weiß hier jemand Rat wie man da vorgehen muss?

Danke schon mal Vorab!



//Edit: Titel ver(schlimm)bessert...

marabu 15. Aug 2008 18:28

Re: FB: Einfügen von Umlauten in ein VarChar Feldtyp... Wie?
 
Hallo Jürgen,

dein Literal ist sehr wahrscheinlich mit der CodePage WINDOWS-1252 kodiert. Du kannst es mit AnsiToUtf8() in einen passenden String konvertieren und diesen in dein Statement einbauen - vorzugsweise über einen Parameter.

Freundliche Grüße

mkinzler 15. Aug 2008 18:30

Re: FB: Einfügen von Umlauten in ein VarChar Feldtyp... Wie?
 
Welche Sortierung hat das Feld?

juergen 15. Aug 2008 19:21

Re: FB: Einfügen von Umlauten in ein VarChar Feldtyp... Wie?
 
@mkinzler,
Sortierung ist auch UTF8...

Ich hatte erst gedacht es liegt evtl. an der Tabelle, welche ich auch über ein Sript erzeugt hatte, aber das Problem besteht anscheinend generell.
Habe z.B. gerade eine neue DB angelegt. Dort als "Schriftart Zeichensatze" das ANSI_CharSet ausgewählt.
Als Zeichensatz wieder UTF8 ausgewählt.
Neue Tabelle angelegt, selbes Problem. :gruebel:

@ marabu,
Zitat:

Zitat von marabu
dein Literal ist sehr wahrscheinlich mit der CodePage WINDOWS-1252 kodiert.

Kann das überhaupt so sein, wenn die DB wie oben beschrieben angelegt wurde?

Ich habe nun mal noch mit ISO8859_1 und WIN1251 experimentiert...Selbes Problem...
Ich habe nach deinem Vorschlag AnsiToUtf8() gesucht, aber da scheint es in Firebird nichts zu geben?


Ratlose Grüße
Jürgen

mkinzler 15. Aug 2008 20:29

Re: FB: Einfügen von Umlauten in ein VarChar Feldtyp... Wie?
 
Ich habe es gerade auch mal getestet. Hat problemlos funktioniert :gruebel:

juergen 15. Aug 2008 21:22

Re: FB: Einfügen von Umlauten in ein VarChar Feldtyp... Wie?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo mkinzler,

ich habe mal eine winzige Test-DB angefügt (1 Tabelle mit 2 Datensätzen).
Bei mir hier lassen sich keine Umlaute einfügen.
Wärest du so nett und könntest das bei dir mal testen?
Dann kann man schon mal viele Sachen ausschließen.

Vielen Dank schon mal.

mkinzler 15. Aug 2008 21:36

Re: FB: Einfügen von Umlauten in ein VarChar Feldtyp... Wie?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hat funktioniert, sowohl per Dateneingabe im Grid wie auch per SQL-Skript.

juergen 15. Aug 2008 21:56

Re: FB: Einfügen von Umlauten in ein VarChar Feldtyp... Wie?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für deine Mühe!
Wenn ich die Tabelle hier öffne, werden die Umlaute nicht angezeigt (siehe Bild).
Unter welchem Betriebssytem hast du das getestet und mit welcher FB-Version?
Ich habe unter einer dt. VISTA 32 Bit Installation (und auch kein weiteres Sprachpaket installiert) folgende FB-Version:
Server Version: WI-V2.1.1.17910 Firebird 2.1
Server Implementation: Firebird/x86/Windows NT
Service Version: 2

mkinzler 15. Aug 2008 22:01

Re: FB: Einfügen von Umlauten in ein VarChar Feldtyp... Wie?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Firebird 2.1 unter Vista x64.

juergen 15. Aug 2008 22:21

Re: FB: Einfügen von Umlauten in ein VarChar Feldtyp... Wie?
 
Ok, ich hab's!
Ich habe hier ein Tutorial wonach ich vorgegangen bin.
Beim Erstellen der DB habe ich wie dort vorgeschlagen dann für die Seitengröße 4096 ausgewählt.
Wenn ich als Seitengröße 16384 zuweise funktioniert es!

Bedeutet:
- bei Verwendung von UTF8 muss die Pagesize gößer 4096 sein

Danke für die Unterstüzung :thumb: und

Gute Nacht!

Grüße
Jürgen


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:10 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