AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Zeichensatzauswahl bei Firebird
Thema durchsuchen
Ansicht
Themen-Optionen

Zeichensatzauswahl bei Firebird

Ein Thema von idefix2 · begonnen am 9. Jun 2010 · letzter Beitrag vom 9. Jun 2010
Antwort Antwort
Seite 1 von 3  1 23      
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 00:30
Datenbank: Firebird • Version: 2.1 • Zugriff über: UIB
Hallo, ich bin jetzt mit meinen Experimenten mit Firebird etwas weitergekommen, der Zugriff mit den UIB Bibliothek funktioniert erfreulich glatt.

Jetzt fällt mir allerdings auf, dass der Zeichensatz, in dem meine Daten unter Windows sonst gespeichert sind (es handelt sich z.B. um aus Access exportierte tab-delimited Files) mit dem Firebirdzeichensatz nicht zusammenpasst, bei einem Select im ISQL werden mir statt Umlauten und Accents die absonderlichsten Sonderzeichen angezeigt.

Welchen Zeichensatz sollte ich in der Firebird Datenbank einstellen, um so weit wie möglich Windows-kompatibel zu sein und eine vernünftige Sortierfolge zu bekommen, vorzugsweise weil platzsparender und absolut ausreichend ein 8-Bit Zeichensatz? - Kann man überhaupt trotz des bei Delphi ausgebrochenen Unicode-Wahnsinns noch ohne Verrenkungen an eine Datenbank Strings mit 8-Bit-Zeichen übergeben?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 06:27
Der Windows-Zeichensatz ist Win1252
Markus Kinzler
  Mit Zitat antworten Zitat
Alfredo

Registriert seit: 4. Mär 2008
Ort: München
273 Beiträge
 
Delphi 12 Athens
 
#3

AW: Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 10:11
Die deutsche Sortierung ist im Gegensatz zu MySQL bei Firebird ein Problem.

Ich löse dies über ein zusätzliches Sortfeld in dem dann z.B. für ä eben ae steht.

Als Zeichensatz verwende ich in meinen Programmen ISO8859-1 und collate DE_DE.

Hier ist eine schöne Beschreibung der Unterschiede zwischen ISO8859-1 und Win1252

http://de.wikipedia.org/wiki/ISO_8859-1

Geändert von Alfredo ( 9. Jun 2010 um 19:07 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 10:18
Das ist dann aber kein ASCII-Zeichensatz

Win1532 und Collation PXW_INTL850
Markus Kinzler

Geändert von mkinzler ( 9. Jun 2010 um 10:20 Uhr)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#5

AW: Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 13:18
Hallo,

ich habe jetzt eine neue Datenbank mit default character set win1252 angelegt und eine Tabelle mit einem einfachen Programm ohne jede Konvertierung mit unter anderem :

Alizée
Hans Söllner

gefüttert. Wenn ich mir die Datensätze jetzt mit select * from Interpret im ISQL anschaue, zeigt er mir an:

35 AlizÚe
36 Hans S÷llner

Wie kann ich erreichen, daß die Umlaute und Accents stimmen? Und gibt es eine Möglichkeit, das:

Zitat:
Ich löse dies über ein zusätzliches Sortfeld in dem dann z.B. für ä eben ae steht.
zu vermeiden?

edit:
Zitat:
Die deutsche Sortierung ist im Gegensatz zu MySQL bei Firebird ein Problem.
Ich löse dies über ein zusätzliches Sortfeld in dem dann z.B. für ä eben ae steht.
Als Zeichensatz verwende ich in meinen Programmen ISO8859-1 und collate DE_DE.
Ich habe mir jetzt Deinen Link angeschaut - Mit der Collating Sequence ISO8859_1.DE_DE sollten doch Umlaute und Sonderzeichen ganz vernünftig sortiert werden? Was klappt da nicht, dass Du eine separate Spalte anlegst?

Noch etwas: Es schaut so aus, als würden bei all diesen Sortiersequenzen Gross- und Kleinbuchstaben ganz unterschiedliche Sortierwerte bekommen. Gibt es die Möglichkeit, so zu sortieren, dass Gross und Kleinbuchstaben gleich sortiert werden (ohne explizites Konvertieren der Felder in Uppercase)?

Aber mein primäres Problem ist jetzt natürlich, die Daten überhaupt richtig in die Datenbank hineinzubekommen.

Geändert von idefix2 ( 9. Jun 2010 um 13:54 Uhr)
  Mit Zitat antworten Zitat
Alfredo

Registriert seit: 4. Mär 2008
Ort: München
273 Beiträge
 
Delphi 12 Athens
 
#6

AW: Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 19:03
Aus den beigefügten Bilder siehst Du warum ich für DE_DE ein Sortfeld
gebraucht habe.

Wenn Du dir das Bild von der Sortierung PXW_INTEL850 ansiehst, wirst Du
feststellen, dass ich wieder etwas dazugelernt habe.

Hast Du bei deinem Datenfeld auch den Zeichensatz eingestellt?
Miniaturansicht angehängter Grafiken
firebird_sort_alfred.png   firebird_sort_kinzler.png  

Geändert von Alfredo ( 9. Jun 2010 um 19:09 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 19:10
Ja. GGf kann man die Collation auch im Order der Abfrage setzen
Markus Kinzler
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 19:16
@idefix2: Welche Codepage haben die Quelldaten? Wie hast du diese eingefügt?
Markus Kinzler
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#9

AW: Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 19:30
Ja, auch bei den params habe ich den Zeichensatz eingestellt:

Delphi-Quellcode:
s1 = 'update or insert into interpret (name) values (?) matching (name) returning id;';
s2 = 'update or insert into album (name) values (?) matching (name) returning id;';
s3 = 'update or insert into basisverzeichnis (verzeichnis) values (?) matching (verzeichnis) returning id;';
Delphi-Quellcode:
par := TSQLParams.Create (csWIN1252);
erg := TSQLParams.Create (csWIN1252);

par.AddFieldType ('Name', uftVarchar);
erg.AddFieldType ('Id', uftInteger);

Felder := TStringList.Create;
Felder.Delimiter := #9;
Felder.StrictDelimiter := true;

UL.TransactionStart(trans, DB);
repeat readln (f,s); inc (linecount); // Hier lese ich aus einem Tab-delimited Textfile
    felder.DelimitedText := s;
    par.AsString[0] := Felder.strings[2];
    UL.DSQLExecImmed2(DB, trans, s1, 3, par, erg);
    ipnr := erg.AsInteger[0];
    par.AsString[0] := Felder.strings[3];
    UL.DSQLExecImmed2(DB, trans, s2, 3, par, erg);
    albnr := erg.AsInteger[0];
    par.AsString[0] := Felder.strings[11];
    UL.DSQLExecImmed2(DB, trans, s3, 3, par, erg);
    vznr := erg.AsInteger[0];
    until linecount >40; //eof(f);
Zitat:
Welche Codepage haben die Quelldaten?
Bis jetzt habe ich mich mit dieser Frage noch nicht beschäftigen müssen. Der "normale" Windows-Zeichensatz - wenn ich die Datei in Notepad oder einen Teil per cut and paste in den Delphi Quelltext-Editor oder hierher lade:

17 . Zazie, Alizée, Garou, Isabelle Boulay, P.Bruel, etc
18 ... Ungehört Hans Söllner

kommen die Zeichen richtig an. Ich lese die Daten mit einen Delphi Programm zeilenweise ein, weise sie mit Hilfe von "delimitedtext2 direkt einer Stringlist zu und weise dann die Stringlistelemente dem SQL-Abfrageparameter zu.

Im Hex-Editor sehe ich, dass ö in der Originaldatei den Wert $6E hat, é hat den Wert $E9.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

AW: Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 21:19
Ich glaube, ihr macht zuviel des guten. Habe mal bei mir in DB geguckt : Es steht folgendes drin :

Code:
SET SQL DIALECT 3;

SET NAMES ISO8859_1;

CREATE DATABASE '\DB.FDB'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 4096
DEFAULT CHARACTER SET ISO8859_1;
Nicht mal irgendwas mit collate steht drin. Hat mich selber gewundert. Sortieren / suchen, das geht in IBExpert, als auch im Delphi Programm.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:28 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