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 8. Jun 2010 · letzter Beitrag vom 9. Jun 2010
Antwort Antwort
Alfredo

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

AW: Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 18: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?
Angehängte Grafiken
Dateityp: png Firebird_Sort_Alfred.png (17,3 KB, 29x aufgerufen)
Dateityp: png Firebird_Sort_Kinzler.png (14,7 KB, 21x aufgerufen)

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

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

AW: Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 18: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.874 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 18: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
 
#4

AW: Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 18: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
 
#5

AW: Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 20: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
mkinzler
(Moderator)

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

AW: Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 20:23
Und die Sortierung ist wie gewünscht?
Ist ja wie Alfredos Vorschlag
Ist dann aber Unicode nicht wie er wollte ANSI;
Markus Kinzler
  Mit Zitat antworten Zitat
idefix2

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

AW: Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 20:30
Was ist zuviel des Guten?

Ich würde gerne in meiner Datenbank die Umlaute so sehen, wie sie sein sollen. Das ist ganz entschieden NICHT zuviel des Guten.

Ich speichere die Daten ab, und dann steht Mist drinnen. Von collate rede ich ja im Moment noch gar nicht (sehr), das Problem mit der Sortierreihenfolge schau ich mir dann an, wenn die Umlaute in der Datenbank richtig angezeigt werden.

Laut dem Link von Alfredo zur Wikipedia ist der Zeichensatz ISO8859_1 dem Win1252 ziemlich ähnlich, hinsichtlich der Umlaute, die mir Schwierigkeiten machen, sollte kein Unterschied sein.

Ich nehme an, irgend etwas klappt nicht bei der Datenübergabe vom Programm an Firebird, da erfolgt vermutlich irgend eine sinnlose und falsche Konversion.
  Mit Zitat antworten Zitat
idefix2

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

AW: Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 20:44
Das Problem scheint ganz woanders zu liegen. Ich habe mir in einem Viewer das Datenbankfile selbst angeschaut, dort stehen die Umlaute so, wie sie sein sollen. Nur ein Select im ISQL zeigt Mist an. Ob die Umlaute alphabetisch richtig eingeordnet werden, weiss ich noch nicht.

ISQL Select läuft im Kommandozeileninterpreter - Könnte es sein, daß ISQL alle Umlaute im MS-Dos Zeichensatz interpretiert? Das wäre dann allerdings ein recht böser Bug.

edit: Das ist tatsächlich so: Wenn ich CMD aufrufe und mir die Original Textdatei mittels type anschaue, kommt genau der gleiche Mist heraus.

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

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

AW: Zeichensatzauswahl bei Firebird

  Alt 9. Jun 2010, 20:50
Könnte sein. Was zeigt IBExpert, FlameRobin usw an?
Markus Kinzler
  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:14
Das Problem scheint ganz woanders zu liegen...ISQL Select läuft im Kommandozeileninterpreter - Könnte es sein, daß ISQL alle Umlaute im MS-Dos Zeichensatz interpretiert? Das wäre dann allerdings ein recht böser Bug...ist tatsächlich so: Wenn ich CMD aufrufe und mir die Original Textdatei mittels type anschaue, kommt genau der gleiche Mist heraus.
Ach, da ist DOS-Textdatei im Spiel ? Dann kanns so nicht gehen. Sag das doch gleich. Schreibe in die Textdatei eben lediglich das richtige rein. ASCII <-> ANSI.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:43 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