Announcement

Collapse
No announcement yet.

UTF-8-kodierte Textdatei

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

  • UTF-8-kodierte Textdatei

    Hallo zusammen,

    ich habe folgende Frage: ich will unter Delphi 5 eine UTF-8-kodierte Textdatei erzeugen.
    Mit Bibliotheken wie DIUnicode ist das kein Problem, aber ich würde das gerne mit Delphi-Bordmitteln tun.

    Wenn man mit den Standard-Dateifunktionen AssignFile, Rewrite, Writeln, CloseFile eine Textdatei erzeugt, ist diese ja immer ANSI-kodiert.

    Ich weiß gerade nicht so recht, wo ich ansetzen soll. Hat das von euch schon mal jemand gemacht?


    Gruß Andy

  • #2
    Bei D6 gibt es die Funktionen UTF8Encode und UTF8Decode (nicht in Hilfe beschrieben). Ich weiß nicht ob die schon bei D5 dabei sind. Ansonsten kannst du die Funktionen der Jedi Code Library verwenden.

    Comment


    • #3
      Hallo Bernhard,

      danke erst mal für deine schnelle Antwort.

      Mein Gott, manchmal muss man echt erst nen Post in nem Forum machen, um von selbst auf die Lösung zu kommen...

      Die Funktionen der JCL hab ich schon gekannt, aber ich dachte die ganze Zeit, da muss man noch "MEHR" machen, damit die Datei letztendlich UTF-8-kodiert ist

      Folgender Code erstellt mir nun problemlos eine UTF-8-kodierte Datei:

      Code:
      procedure WriteSomeRussianChars;
      var f: Textfile;
          ar_chars: array[0..4] of integer;
          i: integer;
      begin
      
        // einige russische Zeichen
        ar_chars[0] := $0432;
        ar_chars[1] := $0434;
        ar_chars[2] := $044D;
        ar_chars[3] := $045A;
        ar_chars[4] := $0444;
      
        // Dateivariable initialiseren
        AssignFile(f, ExtractFilePath(Application.ExeName) + 'UTF-8.txt');
      
        // Textdatei erstellen
        Rewrite(f);
      
        for i:=0 to High(ar_chars) do
          // Strings UTF-8-kodiert in Textdatei schreiben
          Writeln(f, WideStringToUTF8(WideChar(ar_chars[i])));
      
        // Datei schließen
        CloseFile(f);
      
      end;
      Was nun aber fehlt ist das BOM zur Kennzeichnung der Kodierung, oder? Ist es sinnvoller, das noch zu setzen? Wenn ja, wie könnte ich das in meinem Beispiel noch machen?



      Gruß Andy

      Comment


      • #4
        Wenn du mehr mit Unicode arbeiten willst so ist es sinnvoll Komponenten wie Elpack oder TNTWare zu verwenden. Diese bieten für viele Probleme fertige Lösugnen an.

        Und ob BOM sinnvoll oder nicht hängt davon ab wer die Datei sonst noch lesen soll.

        Comment


        • #5
          Alles klar, danke für die Hilfe.

          Comment

          Working...
          X