Announcement

Collapse
No announcement yet.

Welchen Zeichensatz soll ich verwenden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Welchen Zeichensatz soll ich verwenden

    Hallo Leute !

    Bei der Arbeit mit Interbase, der BDE, dem Interbase-Toolkit Marathon (Englisch) und Delphi (Deutsch) habe ich ständig Probleme mit Umlauten und sz in Varchars. Welchen Zeichensatz soll ich verwenden ?
    Es gibt z.B. DOS852, Win1252, ASCI, ANSI, BorlandDeu etc...

    Vielen Dank, Marcus

  • #2
    Hallo Marcus,

    stelle an der BDE einen Treiber deiner Wahl ein, zum Beispiel BORLAND DEU LATIN1. Nutze außerdem die interne Konvertierung von String, also einen internen Zeichensatz für die Datenbank oder für eine Tabellenspalte:

    CREATE DATABASE .... DEFAULT CHARACTER SET ISO8859_1

    Dann sehen deine Zeichen auch unter ODBC/JDBC so aus, wie Sie von Borland gespeichert werden...

    Mfg, Thoma

    Comment


    • #3
      Hi Marcus,

      auch wenn Thomas nur 'zum Beispiel' schreibt: Die besten Erfahrungen habe ich mit Borland Deu Latin 1 in Kombination mit Character Set ISO8859_1 gemacht.

      Da funktionieren alle deutschen Sonderzeichen aber auch die wichtigsten allgemeinen Sonderzeichen, incl dem Euro-Symbol.

      Gruß Ka

      Comment


      • #4
        Vielen Dank Euch beiden !

        Leider hat Euer Tip nicht mein eigentliches Problem gelöst:
        Ich habe eine IB-Tabelle, die das Feld BEMERKUNGEN DTEXT (Domain: VARCHAR(255)) enthält. Die Datenbank habe ich mit Marathon erstellt und damals nirgendwo einen Zeichensatz explizit definiert, auch hatte ich einen entsprechenden Alias mit der "Delphi-Datanbankumgebung" eingerichtet und dabei keinen Sprachtreiber ausgewählt.
        Irgendwie, vielleicht ist es mir auch zuerst nicht aufgefallen, haben sich Umlaute und ß in Kästchen (ü=), und andere Zeichen (ß=á) verwandelt.
        Um das zu Verändern, habe ich mit den Einstellungen in der BDE und bei Marathon rumexperimentiert. Ich habe so z.B. Dos852 eingestellt und auch Win1552, wie ich es in einem Buch gelesen hatte. Mit dem Erfolg, daß die Spalte nicht lesbar ist, zumindest kommt immer die Fehlermeldung "-802 arithmetic exception, numeric overflow, or string truncation 335544321L" und die Spalte bleibt leer.
        Nach Eurem Tip habe ich ein Script der Metadaten (ohne Daten) erzeugen lassen und den CREATE Befehl mit DEFAULT CHARCTER SET ISO8859_1 ergänzt und ich habe mit der BDE-Konfiguration einen neuen Alias erzeugt und dort LANGDRIVER=Borland DEU Latin-1 eingestellt.
        Als letztes habe ich in einem Texteditor das Script mit den INSERT-befehlen der eigentlichen Daten bearbeitet und habe alle Kästchen etc durch die entsprechenden Umlaute ersetzt...
        Doch beim Einfügen dieser Daten in die neue Datenbank treten wieder massenhaft o.g. Fehler auf und die entsprechenden Spalten bleiben leer !

        Gruß Marcu

        Comment


        • #5
          Hi Marcus,

          mit welchem Tool spielst Du denn das Script ein?

          Interbase WISQL zum Beispiel kümmern deine BDE Einstellungen nämlich gernicht :-)

          Eine Lösung habe ich erstmal auch nicht, dies nur als Tipp zur Fehlersuche.

          Gruß Ka

          Comment


          • #6
            Hallo,

            beim Thema InterBase-Datenbank und Umlaute/Sonderzeichen sind mehrere Stellen beteiligt. Um die Ursache für die auftretenden Probleme einzugrenzen, schlage ich vor, eine Minimal-Testumgebung aufzubauen.

            1. InterBase-Datenbank über ein SQL-Script erzeugen. Über SET NAMES teilt das Script der Anwendung <i>InterBase Windows ISQL</i> mit, daß aller Input mit dem Zeichensatz ISO8859_1 (alias Win1252) zu interpretieren ist. Und der Parameter DEFAULT CHARACTER SET legt für die komplette Datenbank einen eigenen Standard-Zeichensatz fest.
            <pre>
            SET NAMES ISO8859_1;

            CREATE DATABASE "C:\Artikel\BorCon98\CS_2\Database\IBSRCARC.GD B"
            USER "SYSDBA" PASSWORD "masterkey" DEFAULT CHARACTER SET ISO8859_1;

            CREATE TABLE TestTbl1 (
            ID INTEGER NOT NULL,
            Uml CHAR (1) COLLATE DE_DE,
            Txt VARCHAR (30) COLLATE DE_DE,
            PRIMARY KEY (ID));

            INSERT INTO TestTbl1 VALUES (1, "-","A - äöüßÄÜÖ");
            INSERT INTO TestTbl1 VALUES (2, "ä","a - äöüßÄÜÖ");
            INSERT INTO TestTbl1 VALUES (3, "ö","B - äöüßÄÜÖ");
            INSERT INTO TestTbl1 VALUES (4, "ü","C - äöüßÄÜÖ");
            INSERT INTO TestTbl1 VALUES (5, "ß","D - äöüßÄÜO");
            INSERT INTO TestTbl1 VALUES (6, "ß","ä - äöüßÄÜO");
            </pre>

            2. BDE-Alias konfigurieren. Der Eintrag <b>LANGDRIVER</b> wird entweder auf <b>'WEurope' ANSI</b> oder <b>‘ascii’ ANSI</b> gesetzt.


            3. Tabelleninhalt über <i>InterBase Windows ISQL</i> via SELECT * prüfen, nachdem dort <b>vor</b> dem Datenbank-Connect über <i>Sessions | Advanced ISQL Set Options</i> der Character Set auf <b>ISO8859_1</b> gesetzt wurde. Alle Umlaute sollten korrekt dargestellt werden.

            4. Tabelleninhalt über den <i>SQL-Explorer</i> (BDE-Weg) darstellen. Alle Umlaute sollten korrekt dargestellt werden

            Comment


            • #7
              <b>Vielen Dank !<b><br><br>Ich habe jetzt eine neue Datenbank erstellt und dabei explizit den Zeichensatz/Sprachtreiber angegeben und Daten mit einem dafür erstellten Delphiprogramm übertragen.<br>Per Hand habe ich dann die Umlaute selbst gesetzt; da es nicht mehr wie 50 waren, hätte der Aufwand, ein Programm zu schreiben - für mich - nicht gelohnt.<br>Meine Datenbankanwendung läuft jetzt wieder einwandfrei !<br><br>Gruß, Marcus Bila

              Comment

              Working...
              X