fredy: XML und "fremde Sprachen"

Hi!

In XML sind ja "Sonderzeichen" nicht erlaubt. Wenn ich jetzt eine fremde Sprache (= nicht Deutsch, zB Russisch, Griechisch, ...) in einem XML-Dokument verwenden möchte, was mach ich dann mit den ganzen "Nicht-Deutschen-Zeichen", damit mein Parser keinen Fehler ausgiebt.

Ich hab' da in SELFHTML etwas von Unicode gelesen. Muß ich alle Zeichen in Unicode umwandeln.

Wenn ich diese in Unicode codierten Zeichen in einen Browser ausgeben, werden die Zeichen dann richtig interpretiert? (Unicode hat ja über 60.000 Zeichen ....)

Gibt es sonst noch etwas auf das ich bei solch einem Vorhaben aufpassen sollte?

Wo finde ich Funktionen, die einen Text nach Unicode codieren und wieder zurückcodieren ?

Danke
  fredy

  1. Hi fredy

    In XML kannst du im Prinzip jeden Zeichensatz verwenden.
    Du must hin nur Festlegen
    <?xml version="1.0" endcoding="was auch immer"?>
    Allerdings brauchst du einen Parser, der diesen Zeichensatz auch kann.

    Jeder XML-Parser _muß_ utf8 und utf16 (Transportformate für Unicode) verstehen.
    Damit kannst du in einer XML-Dateiohne weiteres äöü oder auch Japanische schriftzeichen verwenden.
    Solange du utf8/16 verwendest, hast mußt du die enc auch nicht angeben.

    Tschüs

    Daniel

    1. Hi Daniel!

      Ich verwende den MS-XML Parser (weil ich auch ASP verwenden).
      Wenn ich ein UTF-8 Encoding verwende, löst dieser eine Fehlermeldung aus, wenn ich "Nicht-ascii-Zeichen" verwende. zB öäüß.

      Kann ich davon ausgehen, daß wenn ich alle "Nicht-Ascii-Zeichen" Zeichen als Unicode angebe, daß ich dann keine Fehlermeldungen bekomme.

      Gibt es irgendwo fertige Funktionen, die Umlaute nach Unicode und wieder zurück konvertieren?

      UTF-16 kenn mein Parser nicht. Dafür kennt er "windows-1250" - Dier Zeichensatz soll für Mitteleuropa sein.
      Durch Probieren hab' ich herausgefunden, daß es windows-1250 bis 1259 gibt - Ich weiß jedoch nicht für welche Sprachen die sind.

      Wenn ich Rusisch schließlich in HTML Seiten anzeigen möchte, so muß ich alle diese Zeichen nach Unicode konverdieren, oder? Was wenn diese nicht unicode sind. Kann man sie dann nur auf russichen Geräten lesen, oder nicht einmal da?

      Kann man in HTML sagen, welchen Zeichensatz die Seite verwenden soll. (Ok, ok es gibt das diesen META-Tag - wird dieser schon unterstützt, oder gibt es Alternativen?)

      Danke
        fredy

      1. Hi fredy

        Der IE unterstützt utf-8 perfekt. Habe es ausprobiert.

        < http://www.sharmahd.com/unipad/>
        Hier gibt es einen Unicodeeditor zum runterladen. Mit dem kannst du utf-8 dateien erzeugen.
        Ich hab's mit arabischen zeichen ausprobiert, tut einwandfrei.

        Tschüs

        Daniel

      2. Hallo!

        Kann ich davon ausgehen, daß wenn ich alle "Nicht-Ascii-Zeichen" Zeichen als Unicode angebe, daß ich dann keine Fehlermeldungen bekomme.

        Ja.

        (auf die encoding Angabe im <?xml ...> würde ich an deiner Stelle nicht viel geben, denn auch der MS-Parser erkennt nicht alles richtig und machmal meldet einen Fehler deshalb)

        Durch Probieren hab' ich herausgefunden, daß es windows-1250 bis 1259 gibt - Ich weiß jedoch nicht für welche Sprachen die sind.

        Windows Codepage #    Display name  
        1250                   Central European (Windows)
        1251                   Cyrillic (Windows)
        1252                   Western                        iso-8859-1
        1253                   Greek (Windows)
        1254                   Turkish (Windows)
        1255 (logical)         Hebrew (ISO-logical)           iso-8859-8i
        1255 (visual)          Hebrew (ISO-Visual)            iso-8859-8
        1256                   Arabic (Windows)  
        1257                   Baltic (Windows)  
        1258                   Vietnamese

        mehr zu char-set:
        ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets und
        ftp://ftp.isi.edu/in-notes/rfc1345.txt

        Wenn ich Rusisch schließlich in HTML Seiten anzeigen möchte, so muß ich alle diese Zeichen nach Unicode konverdieren, oder?

        Na ja... versuchte mal doch zuerst mit einer iso-Angabe, wenn das nicht klappt kannst du noch immer unicodes nehmen.

        Was wenn diese nicht unicode sind. Kann man sie dann nur auf russichen Geräten lesen, oder nicht einmal da?

        Wenn du eine iso-angabe machst und der parser es versteht, dann werden diese richtig dargestellt.
        Hast du keine Angabe zu encoding (dann ist es automatsisch utf-8) wird der parser beim ersten nicht ascii Zichen abbrechen und nichts darstellen.

        Kann man in HTML sagen, welchen Zeichensatz die Seite verwenden soll. (Ok, ok es gibt das diesen META-Tag - wird dieser schon unterstützt, oder gibt es Alternativen?)

        Ja, in HTML ist das kein Problem.

        Grüße
        Thomas

  2. In XML sind ja "Sonderzeichen" nicht erlaubt. Wenn ich jetzt eine fremde Sprache (= nicht Deutsch, zB Russisch, Griechisch, ...) in einem XML-Dokument verwenden möchte, was mach ich dann mit den ganzen "Nicht-Deutschen-Zeichen", damit mein Parser keinen Fehler ausgiebt.

    Ist das eine Frage? Du musst im Proglog der XML Deklaration ein encoding-pseudo-attribut mitgeben, z.B. <?xml version='1.0' encoding='iso-8859-4'?>

    Welches Charset du benutzt, oder ob du alles mit numerischen Referenzen machen willst, musst du selber wissen.

  3. hallo fredy,

    In XML sind ja "Sonderzeichen" nicht erlaubt. Wenn ich jetzt eine fremde Sprache (= nicht Deutsch, zB Russisch, Griechisch, ...) in einem XML-Dokument verwenden möchte, was mach ich dann mit den ganzen "Nicht-Deutschen-Zeichen", damit mein Parser keinen Fehler ausgiebt.

    Ich hab' da in SELFHTML etwas von Unicode gelesen. Muß ich alle Zeichen in Unicode umwandeln.
    <

    eine angabe wie z.B. <?xml version='1.0' encoding='iso-8859-4'?> besagt nichts über die darstellung von zeichen sondern dient lediglich der korrekten _interpretation_ der datei (bzw. des abschnittes).
    es handelt sich hierbei im prinzip um eine codepage-angabe.(zeichen-kodierung)
    sicherlich kennst du daß vom bios-setup, du drückst auf ein z und es erscheint ein y, da englische codepage bzw. andere tastaturbelegung bzw. zeichenkodierung)

    um die zeichen noch richtig darstellen zu können benötigst du natürlich eine zur zeichen-kodierung passende schriftdatei.
    letztendlich gilt, daß wenn keine schriftdatei (z.b. kyrillische darstellung) vorhanden, dann auch keine korrekte darstellung.
    die iso - norm bezieht sich normalerweise auf 8 bit (256 zeichen).
    das unicode-format bedient sich 16 bit mit denen alle (nicht ganz, einige fehlen nocht) schriften _decodiert_ werden können.

    zb. für dein dokument gibst du eine codepage für kyrillisch an. in deinem dokument erscheint ein ä. entweder machst du hier ein entitie oder du gibst direkt einen unicode-wert für ein ä an.
    der parser braucht das zur interpretation.
    wenn du aber ein ä schreibst, dann schreibst du in wirklichkeit nur ein 8 bit zeichen in das dokument, welches auf deinem computer nur als ä dargestellt wird.
    du kannst in deinen elementen auch direkt eine zeichensatz-angabe schreiben (siehe charset etc.) und per css auch auf eine dazu passende schrift zeigen lassen (style="font-family: kyrillisch"), aber wie gesagt, wenn keine schriftdatei vorhanden dann auch keine darstellung.

    (
    stichwort downloadbare schriften : wird vom ie und ns unterschiedliche verwirklicht und ist leider noch nicht ausgereift.
    )

    es gibt auch schon programme die dir den gesamten text in unicode speichern. (es sei denn das ausgabeprogramm kann das von alleine)

    Wenn ich diese in Unicode codierten Zeichen in einen Browser ausgeben, werden die Zeichen dann richtig interpretiert? (Unicode hat ja über 60.000 Zeichen ....)
    <
    interpretiert ja
    korrekt dargestellt ja, wenn schriftdatei zur darstellung vorhanden und angewählt.
    das hängt schließlich vom dem verarbeitendem programm ab, obs die dekodierten zeichen verarbeiten und anzeigen kann.

    das w3 geht dahin in zukunft alles auf unicodes basieren zu lassen.
    übrigends könntest du anstatt iso genausogut eine din angeben.
    letztendlich ist dies auch davon abhängig, ob das ziel- bzw. verarbeitende programm diese codierung kennt.
    auch brauser sind nur programmen ;)
    du kannst beim ie zb. über ansicht - codierung manuell eine zeichen-kodierung auswählen (z.b. utf-8, unicode) oder die autom. auswahl aktivieren.

    ich hoffe daß hier hat dir ein bißchen im verständnis weitergeholfen.
    das thema ist eigentlich so interessant, daß müßte eigentlich mal so richtig ausdiskutiert werden würde sicherlich den rahmen hier sprengen.

    gruß
    stw