image encoding ?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

image encoding ?

Edwin Buehler
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.

- Edwin 

Reply | Threaded
Open this post in threaded view
|

Re: image encoding ?

NorbertHartl
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

Reply | Threaded
Open this post in threaded view
|

Re: image encoding ?

Edwin Buehler
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


Reply | Threaded
Open this post in threaded view
|

Re: image encoding ?

NorbertHartl
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

Reply | Threaded
Open this post in threaded view
|

Re: image encoding ?

Philippe Marschall
In reply to this post by Edwin Buehler
Am 23. April 2008 11:26 schrieb Edwin Buehler <[hidden email]>:

> 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.

Das ist keine Garantie dass alles richtig funktioniert. Zuerst müssen
wir das gewünschte Verhalten kennen. Das ist in diesem Fall ob die
Strings im image Squeak oder utf-8 encoded sein sollen. Es geht also
darum ob für uft-8 Strings von der Datenbank und vom Web eine
Dekodierung vorgenommen werden sollte.

Gruss
Philippe

> 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.
>
>
>
>
> - Edwin