• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Cache.xml ISO vs UTF

greiol

Geoguru
Ich habe mal wieder das Problem mit dem encoding. In den Cache XML steht, es handele sich um ISO-8859-1, aber wenn ich mir den Inhalt ansehe haben jede Menge UTF-8 kodierte Zeichen. Ich habe vorsichtshalber mal auf 1.3.2872 aktualisiert, einen Wegpunkt gelöscht und per GPX neu eingelesen, aber es ändert sich nichts daran.
Ist der Header falsch oder liegt es an der Java Version, noch dazu unter Linux genutzt?
 

arbor95

Geoguru
ich weiss jetzt nicht ganz genau was du meinst.

Im Prinzip ist in den Cache.xml - Dateien ISO Zeichensatz.

So viele ich weiss wird UTF nicht gesondert behandelt.
Das steht ja dann auch in den <![CDATA Bereichen.

Vielleicht kannst du ja mal ein Beispiel zur Erläuterung bringen.
 

Rupa

Geowizard
Code:
[dakini]~/Documents/Application/CacheWolf/RupaZ$ file -i gcwd0f.xml 
gcwd0f.xml: application/xml; charset=utf-8
[dakini]~/Documents/Application/CacheWolf/RupaZ$ head -1 gcwd0f.xml 
<?xml version="1.0" encoding="ISO-8859-1"?>
Betrifft auch hier alle gc*.xml-Dateien. Die Deklaration ist schlichtweg verkehrt. Kein Wunder, sind doch alle mir bekannten Quellen für Cachebeschreibungen etc. in UTF8.
 

arbor95

Geoguru
Ich sehe das so:

Das gespeicherte Format ist natürlich UTF-8.
Allerdings ohne diese Introzeichen.
Das ist ja auch default beim Schreiben von Dateien in Java.

UTF-8 Zeichen kommen in den unverändert übernommenen <![CDATA[ Bereichen vor.

html-entities in den Cachebeschreibungen werden angeblich in ISO - Zeichen gewandelt.

Was sonst noch passiert? Hab ich mich noch nicht mit beschäftigt. Habe alles so geerbt wie es jetzt ist und eher an der Funktionalität gedreht.

Insofern ist es lustiges Durcheinander bei dem das Programm hoffentlich immer den Überblick behält.
 
OP
G

greiol

Geoguru
araber95 schrieb:
Im Prinzip ist in den Cache.xml - Dateien ISO Zeichensatz.
Tatsächlich enthalten sie bei mir überwiegend UTF-8 Kodierte Daten. Ich hab mir gerade mal zum Spaß die Windows Version installiert und auch da wird der Inhalt einer GCxxx.xml nach einem GPX-Import erst in Notepad++ korrekt angezeigt wenn ich UTF-8 statt des gemeldeten ISO-8859-1 erzwinge.
araber95 schrieb:
So viele ich weiss wird UTF nicht gesondert behandelt.
ISO und UTF werden durchaus unterschiedlich kodiert und dekodiert.
araber95 schrieb:
Das steht ja dann auch in den <![CDATA Bereichen.
CDATA schützt erst mal nur Textblöcke, die sonst als Markup erkannt würden. CDATA bedeutet nicht automatisch dass es als Binärdaten zu interpretieren ist. Sonst könnte man einfach Bilder rein stopfen, aber genau das geht eben nicht.
araber95 schrieb:
Vielleicht kannst du ja mal ein Beispiel zur Erläuterung bringen.
Unbenannt.pngSo sieht es aus, wenn man die Kodierungsinfo ernst nimmt. Im Beispiel übrigens das Ergebnis eines Spidervorgangs.

Mir ist auch klar, dass das gewachsener, geerbter Programmcode ist ;) Aber wenn alle Eingangskanäle UTF-8 liefern, wäre es vielleicht am einfachsten oben auch UTF-8 hin zu schreiben.

Die index.xml hat das Problem übrigens nicht, denn da läuft alles durch SafeXML.

Die Anfrage ist kein Selbstzweck um dich zu ärgern :D Ich habe versucht mir etwas zu basteln was die Daten aus einem CacheWolf Profil auf einem Symbian Handy anzeigt und dabei einfach auf den vorhandenen XML Parser zurück gegriffen. Dabei ist mir das ganze aufgefallen und nach einer manuellen Änderung der Charset Deklaration war die Anzeige plötzlich OK. Da habe ich auch erst mal in Ruhe nachgelesen ob und warum der Parser recht haben könnte.
 

arbor95

Geoguru
Ab sofort wird alles mit UTF-8 im head geschrieben.

Der SafeXML wandelt nur die Entities in die korrekte interne Darstellung (?) . Von daher gehört da wohl auch UTF-8 in den header der index.xml.
 
OP
G

greiol

Geoguru
araber95 schrieb:
Ab sofort wird alles mit UTF-8 im head geschrieben.
danke
araber95 schrieb:
Der SafeXML wandelt nur die Entities in die korrekte interne Darstellung (?) . Von daher gehört da wohl auch UTF-8 in den header der index.xml.
Wenn man das auch auf UTF-8 umstellt, kann man SafeXML ziemlich vereinfachen, da Umwandlungen wie
Ä -> Ä oder Ä oder Ä
und zurück nicht mehr notwendig sind. Diese Umwandlungen dienen ja unter anderem auch dazu diese Zeichen aus dem eventuell problematischen Zeichenraum zurück nach 7-Bit ASCII zu transferieren denn in dem Bereich sind sich UTF-8 und ISO-8859-1 völlig einig. Aber es schadet auch nichts die Umwandlungen drin zu lassen und sich spannenderen Themen zuzuwenden ;)
 
Oben