XML und "fremde Sprachen"
fredy
- xml
0 Daniel Thoma0 fredy
0 Björn Höhrmann0 stw
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
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
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
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
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
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.
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