[Squeak-ev] image encoding ?

Norbert Hartl norbert at hartl.name
Mit Apr 23 13:44:48 UTC 2008


On Wed, 2008-04-23 at 14:38 +0200, Edwin Buehler wrote:
> Am 23.04.2008 um 12:37 schrieb Norbert Hartl:
> 
> > On Wed, 2008-04-23 at 11:26 +0200, Edwin Buehler wrote:
> >> Hallo,
> >>
> >>
> >> ich habe ein Problem mit der utf-8 Kodierung in meinem Image.
> >
> >>
> >> Ich habe ein mir neues Image (basierend auf v3.9) aufgebaut mit allen
> >> Teilen die ich brauche. Danach habe ich mit Monticello
> >> auch meinen Code eingeladen. Zunächst schien es das alle richtig
> >> funktioniert.
> >> Alle Umlaute werden richtig mit der Seasideapplication auf der
> >> Webseite dargestellt. Die Strings kommen dabei entweder aus einer
> >> UTF-8
> >> kodierten postgres Datenbank oder aus einer Übersetzungstabelle vom
> >> LanguageEditor aber nicht aus.
> >>
> >>
> >> Wenn ich nun aber die Datenbank lösche und die mit GLORP neu erzeugte
> >> mit Daten füllen will, dann führen die Umlaute aus dem Smalltalk code
> >> zu einer Fehlermeldung von postgres: "ERROR:  invalid byte sequence
> >> for encoding "UTF8": 0xfc"
> >>
> >>
> >> Ändere ich in meinem neuen Image eine Methode die mir Daten für die  
> >> DB
> >> erzeugt und übertrage meinen Code mit Monticello auf
> >> mein altes Images, dann werden die Strings mit Umlauten im Code  
> >> wieder
> >> als utf-8 erkannt. Aber sie werden nicht richtig auf der Webseite
> >> angezeigt.
> >>
> >>
> >> Muß ich in meinem Image die Kodierung einstellen ?
> >>
> >>
> >> Im Internet und den Squeaklisten konnte ich nichts zu meinem Problem
> >> finden.
> >>
> >
> > Dann hast du mein Posting zu genau diesem Problem nicht gefunden :)  
> > [1]
> > Die ganze Geschichte hat nichts mit der Kodierung in deinem Image zu
> > tun, sondern mit den Übergabestellen zwischen Image und der  
> > Aussenwelt.
> > Derer gibt es vier. 1.) aus dem Web 2.) zur Datenbank 3.) von der
> > Datenbank und 4.) ins Web. Wenn du WAKomEncoded als Webserver benutzt,
> > dann hast du 1.) und 4.) schon erschlagen. Wenn du meine PostgresV2
> > Version benutzt (PostgresV2-noha.8) dann sind 2.) und 3.) auch gefixt.
> > Das Entscheidende hier ist nicht, welches Encoding deine Datenbank zur
> > Speicherung benutzt, sondern welches Encoding squeak und postgres zur
> > Kommunikation untereinander benutzen.
> >
> > [1]
> > http://lists.squeakfoundation.org/pipermail/seaside/2007-May/012120.html
> >
> > Ich hoffe, das hilft.
> >
> > Norbert
> >
> >
> 
> 
> Danke,
> mit PostgresV2-noha.8 funktioniert es wieder.
> 
> Obwohl ich noch nicht verstehe wieso es im alten Image ging und im  
> neuen nicht.
> Ich hatte vor einigen Monaten folgenden Code eingebaut der das  
> Encoding für den Client
> gesetzt hat. Zusammen mit SwazooServer. Hat bisher auch prima  
> funktioniert.
> 
> MyGlorpDatabase >> connect
> ....
> encoding := session accessor executeSQLString: 'SHOW CLIENT_ENCODING'.
> encoding isEmpty
> 		ifTrue: [
> 			session accessor connection encoding: #'iso-8859-1'.
> 			session system platform characterEncoding: #'iso-8859-1']
> 		ifFalse: [
> 			session accessor connection connectionArgs clientEncoding: #utf8.
> ....
> 
> Vielleicht finde ich die Ursache ja noch, ansonsten gehts jetzt  
> erstmal wieder.

Also, das clientEncoding: auf den connectionArgs habe ich schon länger
committed. Ich hab heute (bevor ich die Mail schrieb) noch das 
Stückchen committed, das utf-8 als encoding setzt, wenn kein explizites
encoding gesetzt ist.

Ansonsten kann ich da wenig zu sagen.

Norbert