Datenbank mit Zeichensatz UTF-8
Verfasst: Do 3. Okt 2019, 10:44
Hallo.
Sitzung: "Firebird ISQL Tool"
Mit dem Tool soll u. a. ein deutscher Umlaut ü in die mit Zeichensatz UTF-8 belegte Datenbank verein - DB-Tabelle mitglieder geschrieben werden. Geht so nicht:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ISQL Version: WI-T4.0.0.1436 Firebird 4.0 Beta 1
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect 'c:\users\name\documents\firebird\verein.fdb' user 'sysdba' password 'pa$$word';
Server version:
WI-T4.0.0.1436 Firebird 4.0 Beta 1
Database: 'c:\users\name\documents\firebird\verein.fdb', User: SYSDBA
SQL> SHOW TABLES;
MITGLIEDER
SQL> SELECT * FROM mitglieder;
ID NAME
============ ==============================
1 Blume
SQL> UPDATE mitglieder SET name = 'Blümchen' WHERE id = 1;
Statement failed, SQLSTATE = 22000
Malformed string
SQL>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ich habe nun die Codepages 850, 1252 und 65001 benutzt, um den Umlaut in die DB-Tabelle zu schreiben. Bei allen kam die gleiche obige Meldung:
"Statement failed, SQLSTATE = 22000
Malformed string"
Ich habe aus den Dokus herausgelesen, dass das mitgelieferte "Firebird ISQL Tool" das jenige Tool sei, mit dem die Firebird-Datenbank administriert werden kann. Man könne mit ihm fast alles machen. Mir soll das recht sein - komme gut damit klar. Es hat einige 'Gemeinsamkeiten' mit dem MariaDB-Tool Command Prompt:
"Setting environment for MariaDB 10.4 (x64)
C:\Windows\system32>"
Ein für mich wichtiger Unterschied besteht wohl offenbar darin, dass ich mit dem erwähnten MariaDB-Tool eine MariaDB UTF-8 Datenbank mit bspw. einem ü selecten oder auch updaten kann - ohne eine Meldung zu erhalten.
Nun habe ich eine weitere Sitzung mit dem "Firebird ISQL Tool" durchgeführt.
Hierbei habe ich die Datenbank verein1.fdb und die DB-Tabelle mitglieder erstellt.
Besonderheit: Ich habe weder den Zeichensatz (somit also: Ohne) noch die PAGE-SIZE vorgegeben.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ISQL Version: WI-T4.0.0.1436 Firebird 4.0 Beta 1
Use CONNECT or CREATE DATABASE to specify a database
SQL> CREATE DATABASE 'c:\users\name\documents\firebird\verein1.fdb'
CON> USER 'sysdba' PASSWORD 'pa$$word'
CON> ;
Server version:
WI-T4.0.0.1436 Firebird 4.0 Beta 1
SQL> CREATE TABLE mitglieder (
CON> id INTEGER NOT NULL,
CON> name VARCHAR(30) NOT NULL
CON> );
SQL> ALTER TABLE mitglieder ADD PRIMARY KEY (id);
SQL> insert into mitglieder (id, name)
CON> values ('1', 'Blümchen');
SQL> SELECT * FROM mitglieder;
ID NAME
============ ==============================
1 Blümchen
SQL>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Verhaltene Freude. Jetzt nämlich gibt es keine Probleme/Meldungen beim insert, select und update bei Verwendung von ü.
Ich habe gelesen:
Einer Firebird Datenbank der beim createn auch gleich der Zeichensatz (hier: UTF-8) zugewiesen wird, hält diesen Zeichensatz auch immer gleich in den DB-Feldern mit entsprechenden Datentyp als Standard-Vorbelegung bereit. Also: Ein Feld name mit Datentyp varchar(50) wird ohne Angabe eines anderen Zeichensatzes immer auch UTF-8 belegt sein, denn die Datenbank ist bzw. wurde so (UTF-8) angelegt. Oder denke ich falsch?
Und wenn ich nicht falsch denke:
Warum gibt es dann die 'Problemchen' (z.B. mit dem "Firebird ISQL Tool", Windows Eingabeaufforderung) die wohl immer erst dann auftreten, wenn der Datenbank beim createn der Zeichensatz UTF-8 mit zugewiesen wird. Mehr als die Codepage angeben, die bei der Kommunikation mit der Datenbank verwendet werden soll, kann ich doch nicht machen ...
Wie bitte legt Ihr denn Euere Datenbanken in Firebird unter Verwendung von ISQL an - mit Zeichensatzvorgabe oder ohne?
Viele Grüße
Gerd
Sitzung: "Firebird ISQL Tool"
Mit dem Tool soll u. a. ein deutscher Umlaut ü in die mit Zeichensatz UTF-8 belegte Datenbank verein - DB-Tabelle mitglieder geschrieben werden. Geht so nicht:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ISQL Version: WI-T4.0.0.1436 Firebird 4.0 Beta 1
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect 'c:\users\name\documents\firebird\verein.fdb' user 'sysdba' password 'pa$$word';
Server version:
WI-T4.0.0.1436 Firebird 4.0 Beta 1
Database: 'c:\users\name\documents\firebird\verein.fdb', User: SYSDBA
SQL> SHOW TABLES;
MITGLIEDER
SQL> SELECT * FROM mitglieder;
ID NAME
============ ==============================
1 Blume
SQL> UPDATE mitglieder SET name = 'Blümchen' WHERE id = 1;
Statement failed, SQLSTATE = 22000
Malformed string
SQL>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ich habe nun die Codepages 850, 1252 und 65001 benutzt, um den Umlaut in die DB-Tabelle zu schreiben. Bei allen kam die gleiche obige Meldung:
"Statement failed, SQLSTATE = 22000
Malformed string"
Ich habe aus den Dokus herausgelesen, dass das mitgelieferte "Firebird ISQL Tool" das jenige Tool sei, mit dem die Firebird-Datenbank administriert werden kann. Man könne mit ihm fast alles machen. Mir soll das recht sein - komme gut damit klar. Es hat einige 'Gemeinsamkeiten' mit dem MariaDB-Tool Command Prompt:
"Setting environment for MariaDB 10.4 (x64)
C:\Windows\system32>"
Ein für mich wichtiger Unterschied besteht wohl offenbar darin, dass ich mit dem erwähnten MariaDB-Tool eine MariaDB UTF-8 Datenbank mit bspw. einem ü selecten oder auch updaten kann - ohne eine Meldung zu erhalten.
Nun habe ich eine weitere Sitzung mit dem "Firebird ISQL Tool" durchgeführt.
Hierbei habe ich die Datenbank verein1.fdb und die DB-Tabelle mitglieder erstellt.
Besonderheit: Ich habe weder den Zeichensatz (somit also: Ohne) noch die PAGE-SIZE vorgegeben.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ISQL Version: WI-T4.0.0.1436 Firebird 4.0 Beta 1
Use CONNECT or CREATE DATABASE to specify a database
SQL> CREATE DATABASE 'c:\users\name\documents\firebird\verein1.fdb'
CON> USER 'sysdba' PASSWORD 'pa$$word'
CON> ;
Server version:
WI-T4.0.0.1436 Firebird 4.0 Beta 1
SQL> CREATE TABLE mitglieder (
CON> id INTEGER NOT NULL,
CON> name VARCHAR(30) NOT NULL
CON> );
SQL> ALTER TABLE mitglieder ADD PRIMARY KEY (id);
SQL> insert into mitglieder (id, name)
CON> values ('1', 'Blümchen');
SQL> SELECT * FROM mitglieder;
ID NAME
============ ==============================
1 Blümchen
SQL>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Verhaltene Freude. Jetzt nämlich gibt es keine Probleme/Meldungen beim insert, select und update bei Verwendung von ü.
Ich habe gelesen:
Einer Firebird Datenbank der beim createn auch gleich der Zeichensatz (hier: UTF-8) zugewiesen wird, hält diesen Zeichensatz auch immer gleich in den DB-Feldern mit entsprechenden Datentyp als Standard-Vorbelegung bereit. Also: Ein Feld name mit Datentyp varchar(50) wird ohne Angabe eines anderen Zeichensatzes immer auch UTF-8 belegt sein, denn die Datenbank ist bzw. wurde so (UTF-8) angelegt. Oder denke ich falsch?
Und wenn ich nicht falsch denke:
Warum gibt es dann die 'Problemchen' (z.B. mit dem "Firebird ISQL Tool", Windows Eingabeaufforderung) die wohl immer erst dann auftreten, wenn der Datenbank beim createn der Zeichensatz UTF-8 mit zugewiesen wird. Mehr als die Codepage angeben, die bei der Kommunikation mit der Datenbank verwendet werden soll, kann ich doch nicht machen ...
Wie bitte legt Ihr denn Euere Datenbanken in Firebird unter Verwendung von ISQL an - mit Zeichensatzvorgabe oder ohne?
Viele Grüße
Gerd