[Squeak-ev] Umlaute

Philippe Marschall philippe.marschall at gmail.com
Mon Dez 24 08:52:10 UTC 2007


2007/12/24, Enno Schwass <onkelenno at mac.com>:
> Hallo
>
> Ich möchte Auszüge aus einer csv-Textdatei (utf-8) in Seaside
> anzeigen und
> habe Probleme bei der Anzeige von Umlauten.

Für solche Fragen die Seaside Liste:
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside

> Das Einlesen mittels FileStream readOnlyFileNamed: aFile und das
> anschliessende Parsen (findTokens: escapedBy:) funktioniert prima.
>
> Wenn ich aber in renderContentOn: die Daten ausgebe (der Browser
> steht auf utf-8)
> sehe ich keine Umlaute. Seltsamerweise erscheinen sie, wenn ich im
> Browser auf
> iso-8859-1 wechsle. Dabei war das Original-File utf-8 und in Squeak
> (im Explorer) sehe ich
> auch die Umlaute.

Squeak nahm also Konvertierung von utf-8 zu Squeak encoding
automatisch for. Aus dem restlichen Beschreib deines Problems gehe ich
davon aus, das du WAKom und nicht WAKomEncoded(39) verwendest. Mit
WAKomEncoded(39) sollten die Daten im Browser richtig erscheinen.
Welche Version du verwenden musst hängt leider nicht nur von deiner
Squeak version, sondern auf von deiner KomHttpSever version ab.

Wenn du von WAKom auf WAKomEncoded(39) wechselst liefert dir Seaside
alle Strings als Strings mit Squeak encoding (ein character entspriche
einem WideCharacter) erwartet im Gegenzug aber auch, dass du alle
Strings in Squeak encoding lieferst. Das betrifft auch allenfalls
bestehende Daten.

Wenn du das nicht willst und weiter WAKom verwenden willst musst du
die Daten nach utf-8 konvertieren entweder mit:
convertToWithConverter: UTF8TextConverter new
oder auf dem stream
converter: Latin1TextConverter new
(ja das ist richtig, Latin1)

> Muss ich vor der Ausgabe irgendwo noch einmal
> konvertieren?
> Brauche ich asWideString?

#asWideString bringt bei einem Latin1 String rein gar nichts.

> Für die Ausgabe benutze ich html text: myText

Das ist korrekt.

Gruss
Philippe

> Kann jemand helfen?
>
> Frohe Weihnachten
> Enno
>
>