[Squeak-ev] image encoding ?

Edwin Buehler mailbox at edwin-buehler.net
Mit Apr 23 12:38:40 UTC 2008


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.

Das neue Image hatte ich auch nur deshalb erzeugt weil mein changes  
file fast 32MB groß war und sich auch nicht verkleinern ließ.
Nochmals Danke,
- Edwin