# Problem mit Umlauten Sonderzeichen



## Primus852 (14. Mai 2008)

Hallö,

ich stecke mal wieder an einem Problem, nämlich folgendem:

Ich lese eine XML Datei aus dem Internet aus und durchsuche diese. Jeder Wert zwischen <id> </id> und <title> </title> wird in eine Listbox eingetragen, beim Doppelklick wird unter anderem eine Datei mit dem Namen des Wertes zwischen <title> </title> angelegt.
Dabei entsteht folgendes Problem: der Wert enthält zum einen teilweise Doppelpunkte, was ein Anlegen der Datei unmöglich macht, zweitens wird beim Übertragen von der XML Datei in die Listbox jeder Umlaut in kryptische Zeichen umgewandelt (ä wird Ã¤ z.B.).
Vielleicht ist dazu noch wichtig zu wissen, dass ich keinen XML Parser benutze, sondern die Datei lokal speichere und via Len/InStr/Mid etc. durchsuche, ich weis nicht ob das relevant ist.

Fragen sind also 2:
Wie kann ich den Doppelpunkt beim Doppelklick auf den Listeneintrag vorm Speichern umwandeln (in der Liste sollte er so bleiben)?
Wie verhindere ich beim Eintragen in die ListBox, dass die Umlaute nicht zu entziffern sind, in der XML sind ja auch alle korekt?

Ich hoffe auf viele Lösungen und freue mich über jeden noch so kleinen Denkanstoss

LG

PrimuS


----------



## Dario Linsky (14. Mai 2008)

Hi,

zum ersten Problem solltest du dir mal Funktionen wie URLEncode und URLDecode ansehen. Ich bin gerade nicht sicher, ob es die schon als API gibt oder ob du dir die selbst implementieren müsstest. Ein Beispiel dafür findest du hier: http://www.freevbcode.com/ShowCode.asp?ID=1512

Das andere Problem könnte am Zeichensatz (evtl. UTF-8?) liegen, mit dem die Datei gespeichert wurde. Schau mal nach, ob du da irgendetwas in deinem Editor einstellen kannst.

Ansonsten würde ich dir aber empfehlen, doch lieber eine API zum Parsen von XML-Dokumenten zu benutzen - das erleichtert dir die Arbeit, macht den Code übersichtlicher und damit die Anwendung besser wartbar und was das beste ist: Du kannst die Umlaute wie in HTML durch Escape-Sequenzen darstellen. :suspekt:

Grüße, D.


----------



## Primus852 (14. Mai 2008)

Hallö,

erstmal danke für die Antwort, allerdings kann ich mit der URLEn-/Decode nicht so recht was anfangen, ich will ja keine URL encoden, sondern nur verhindern, dass die gespeicherte Textdatei 1:1 übertragen wird.

Ich benutze diese XML Datei:
http://xml.n4rf.net/ofdbgw/search/hitch

Diese ist zwar UTF-8 kodiert, sollte das nicht egal sein, wenn ich diese als txt speichere?

LG

PrimuS


----------



## Dario Linsky (14. Mai 2008)

Hi,

mit URLEncode kannst du einen Text so codieren, dass bestimmte Sonderzeichen, die in Dateinamen oder URLs nicht vorkommen dürfen, umgewandelt werden. Sollte doch so ziemlich das sein, was du haben willst, wenn ich dich richtig verstanden habe. 

Wenn die Datei im Unicode-Format abgespeichert ist, macht das nichts, solange du nur den ASCII-Code bzw. Latin1 benutzt. Darüber hinaus kann Visual Basic 6 mit Unicode von sich aus erstmal nicht viel anfangen. Eine ausführliche Anleitung, wie du VB6 fit für Unicode machst, findest du unter anderem hier: http://www.cyberactivex.com/UnicodeTutorialVb.htm

Grüße, D.


----------



## Primus852 (15. Mai 2008)

Hallo,

ich habe mir URLEncode zu Gemüte geführt und es tatsächlich hinbekommen, wie ich es wollte, sogar beide Probleme.

Jetzt ergibt sich aber noch eine Kleinigkeit:


```
ElseIf lngChar = Asc("Ã¤") Then
            strResult = strResult & "ä"
        ElseIf lngChar = Asc("Ã¼") Then
            strResult = strResult & "ü"
        ElseIf lngChar = Asc("Ã¶") Then
            strResult = strResult & "ö"
```


Das sind die Zeichen die falsch ausgegben weden und die ich umwandeln möchte,es sind immer die Gleichen. ABER: es wird immer nur ein ä ersetzt, in jedem der Fälle

Beispieltest, der dabei rauskommt:

```
Erleben Sie, wie das geniale Räderwerk funktioniert, welche kreativen Geistesblitze den Cyber-Thriller hervorgebracht und der Filmtechnologie eine verbläffende neue Dimension eräffnet haben. Diese Originaldokumentation enthält bisher unveräffentlichtes Bildmaterial zum Originalfilm Matrix und exklusive Kommentare all jener, die mit dabei waren. Werfen Sie anschlieäend einen Blick in jene futuristische Realität, die in Echtzeit auf uns zukommt_ Irgendwo an geheimen Schauplätzen rund um die Welt nehmen die Fortsetzungen langsam Gestalt an; bei den ersten Bildern von The Matrix Anime gehen Ihnen die Augen äber - neue Dimensionen, die uns Matrix verstehen helfen. Matrix - Räckblicke, Einblicke, Ausblicke ist das Wer, Was, Wo, Wenn und WOW eines Phänomens, das gerade erst begonnen hat. Pistolenkugeln ausweichen? Ein Kinderspiel. Denn von jetzt an träumen Sie mit Lichtgeschwindigkeit.Doch damit nicht genug_ Weitere faszinierende Specials auf dieser DVD werden Sie noch tiefer in die Matrix von heute und morgen eindringen lassen.
```


Worann kann das liegen?

LG

PrimuS


----------



## vbaOldie (5. August 2010)

Hi,

die Prüfung ist nicht korrekt, weil das von Dir geprüfte Zeichen "Ã¤" aus 2!! Zeichen besteht, und Du prüfst nur den ASC-Code des ersten ;-)

Also:

ElseIf lngChar = Asc("Ã") Then
'nächstes Zeichen holen
 ...

und dann:
'die entscheidende Info ist im 2. Zeichen ;-)
ElseIf lngChar = Asc("¤") Then

strResult = strResult & "ä"


Viel Erfolg
vbaOldie


----------

