ISQL - einen ersten Datensatz eingeben

Forum für neue Firebird-Anwender.

Moderator: thorben.braun

bfuerchau
Beiträge: 147
Registriert: Mo 7. Mai 2018, 18:09

Fr 4. Okt 2019, 18:55

Die DB fährt mit UTF8, der Client fährt mit ANSI.
Wo ist denn das Problem?
Wenn du das nicht akzeptierst, musst du dir was anderes suchen oder mach einfach einen Request bei der Firebirdtruppe auf.
Gerd
Beiträge: 114
Registriert: Di 1. Okt 2019, 17:13

Fr 4. Okt 2019, 19:52

bfuerchau hat geschrieben:
Fr 4. Okt 2019, 18:55
Die DB fährt mit UTF8, der Client fährt mit ANSI.
Wo ist denn das Problem?
Wenn du das nicht akzeptierst, musst du dir was anderes suchen oder mach einfach einen Request bei der Firebirdtruppe auf.
Hallo bfuerchau.

Es geht nicht darum, ob ich es akzeptiere - es geht mir darum zu erkennen, ob das ISQL-Tool mit einer UTF8-Datenbank klarkommt, wenn es unter chp 65001 gestartet wird. Und es scheint wohl so zu sein, dass es damit nicht klar kommt, wenn ich mir deine Hinweise so durchlese. Und ich akzeptiere das - kann es ja eh nicht ändern.


Viele Grüße
Gerd
Linux Mint 19.3 Cinnamon 4.4.8
Firebird 4.0 Beta 1, Superserver - ISQL: LI-T4.0.0.1436
Lazarus 2.0.6 - FPC 3.0.4
fertooos
Beiträge: 2
Registriert: Fr 6. Mär 2020, 20:33

Fr 6. Mär 2020, 20:37

a) ich glaube im ISQL braucht man kein Semikolon
b) deine ID ist numerisch und gehört daher nicht in Hochkomma
bfuerchau
Beiträge: 147
Registriert: Mo 7. Mai 2018, 18:09

So 8. Mär 2020, 12:23

Wenn man die Datenbank bzw. später die Tabelle immer mit CHARSET NONE erstellt, hat man in einer geschlossenen Welt (z.B. nur Deutsch) keine Probleme mit Umlauten.
Sobald aber Mehrsprachigkeit gewünscht wird (z.B. West-/Osteuropa) wäre eine Einstellung mit UTF8 empfehlenswert.
https://de.wikipedia.org/wiki/Zeichensatztabelle

Selbst nur für Westeuropa/USA hast du schon verschiedene Codepages:
850 DOS-Latin-1
437 USA
1252 Windows ANSI
Hier hast du schon unsere Umlaute auf verschiedenen Codepunkten.

Um die Daten für alle aber einheitlich darstellen zu können, bietet sich für die DB z.B. 1252 an, da dies zu 850/437 kompatibel ist.
Bei der Connection-Einstellung gibt man dann an, mit welcher Codepage man arbeitet, der Treiber macht dann automatisch die Umsetzung.

Somit kann ich z.B. die DB ebenso in UTF8 erstellen (Platz ist ja heute kaum ein Problem). Die Felder werden dann in 4facher Größe erstellt: 1 Zeichen = 4 Bytes, da UTF8 ein variabler Zeichensatz zwischen 1 bis 4 Bytes verwendet.
Auf Grund der Satzkomprimierung in der Firebird steigt der benötigte Platz noch nicht mal an.

Arbeitet der Client z.B. mit WideChar (Strings z.B. sind immer Unicode 2-Byte, UCS2), erfolgt die Umwandlung auch automatisch durch den Treiber.

Hat man seine Datenbank aber auf z.B. NONE (Binär) oder 1252 fixiert wird es nicht einfach, Mehrsprachigkeit einzuführen.
Man muss dann für jede Tabellenerstellung explizit CHARSET UTF8 angeben.
Hier eignen sich i.Ü. auch sehr gut Domains (CREATE DOMAIN) für die Verwaltung von Feldtypen.
https://firebirdsql.org/file/documentat ... mn-de.html
Antworten