Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

java und umlaute

334 views
Skip to first unread message

Wolfgang Herfter

unread,
Aug 21, 2004, 9:14:42 AM8/21/04
to
Hallo,
ich stehe hier vor einem, für mich, großen Rätzel.
Auf meinem Webserver (Suse 8.1) gelingt es mir nicht Umlaute unter der
Tomcat 5.0.27 darzustellen.
Ich habe jetzt herausgefunden, das nur eine einzige Javaversion Umlaute auf
diesem Server darstellen kann und zwar diese hier
"java version 1.2.2 Classic VM (build JDK-1.2.2_017, green threads, nojit)"
aber mit der läuft Tomcat nicht.
Mit der Version
" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05)
Java HotSpot(TM) Client VM (build 1.4.2_04-b05, mixed mode) " läuft Tomcat
aber die Umlaute werden nicht dargestellt. Diese Version habe ich auf
meiner Entwicklungsmaschine (Suse 9.1) laufen und hier werden die Umlaute
dargestellt.
Um zu testen welche JavaVersion Umlaute darstellen kann habe ich dieses
kleine Programm geschrieben .
public class Umlaute {
public static void main(String[] args)
{
System.out.println("äääöööüüü");
}
}
Mit der ersten Version kommen die Umlaute, die zweite liefert ????. Beide
Rechner haben eine identische Konfiguration, was die Ländereinstellung
anbelangt.
Auch die Parameter -Duser.language=de oder -Duser.country=DE oder
-Dfile.encoding=ISO-8859-1 funktionieren nicht.

Was mache ich da falsch ?

Danke für euere Antworten im Voraus und einen schönen Tag


Viele Grüße Wolfgang


Paul Schwann

unread,
Aug 21, 2004, 10:20:48 AM8/21/04
to
Hallo Wolfgang,

ich kann Dir auch nicht bei Deinen Server-Problemen helfen. Aber ich
vermeide diesen ganzen Kodierungswahnsinn, indem ich Unicode verwende.
Das hat zwar den kleinen nachteil, daß man den Text nicht mehr so schön
lesen kann. Dafür aber fuunktioniert es einfach.

Dein Progrämmchen sieht dann übrogens so aus:

public class Umlaute {
public static void main(String[] args)
{

System.out.println("\u00e4\u00e4\u00e4\u00f6\u00f6\u00f6\u00fc\u00fc\u00fc");
}
}

Die Codetabellen gibt es bei www.unicode.org

Paul

Marcus Woletz

unread,
Aug 21, 2004, 10:31:59 AM8/21/04
to
[...]

Hallo Wolfgang,

das Thema hatten wir vor einiger Zeit schonmal hier. Werfe doch
mal Google an.

Meine Idee: Der Zeichensatz deines Editors passt nicht zum
Zeichensatz des Compilers oder der Laufzeitumgebung:

1.) Mit -encoding beim Aufruf von javac den Zeichensatz deines
Editors angeben, oder
2.) die Umlaute in der Zeichenkette direkt als Unicode-Zeichen
angeben oder
3.) den Zeichensatz deines Editors ändern.

Mir persönlich gefällt 2.) am besten, da man damit
von irgendwelchen Zeichensatzproblemen gänzlich befreit ist.

Es könnte allerdings auch sein, dass die Zeichensätze in
einer deiner Laufzeitumgebungen nicht passen, d.h.
die JVM verwendet einen anderen Zeichensatz als dein
BS.

ciao
Marcus

Wolfgang Herfter

unread,
Aug 21, 2004, 11:05:49 AM8/21/04
to
> Hallo Wolfgang,
Hallo Marcus,

>
> das Thema hatten wir vor einiger Zeit schonmal hier. Werfe doch
> mal Google an.
das mache ich schon seit Tagen. Wirklich. Ich habe da alles versucht was mir
unter die Finger gekommen ist.

> 2.) die Umlaute in der Zeichenkette direkt als Unicode-Zeichen
> angeben oder
Ich glaube das ist es nicht. Eigentlich gehts hier um ein Servlet, das auf
einer anderen Maschine entwickelt wird. Ich erstelle ein WAR File und sende
das per FTP an meinen Webserver. Um nun zu vermeiden, das Probleme
auftauchen die durch unterschiedliche Versionen hervorgerufen werden, habe
ich beide Maschinen mit den gleichen Tomcat sowie Java Versionen versehen.
War wohl nix. Auch unterscheiden sich die Maschinen nur durch die BS
Version.

> Es könnte allerdings auch sein, dass die Zeichensätze in
> einer deiner Laufzeitumgebungen nicht passen, d.h.
> die JVM verwendet einen anderen Zeichensatz als dein
> BS.
Aber warum gehts dann mit der alten Java Version ?
Und alle Einstellungen bzgl. Länder und Zeichensatz sind auf dem Webserver
richtig auf Deutsch eingestellt.
Ich habe auch div. "export LANG Varianten" probiert (de_DE@euro, de_DE, de,
DE) aber das hilft alles nichts.
>
> ciao
> Marcus
Danke für die Antwort

wolfgang

Marian Aldenhövel

unread,
Aug 21, 2004, 10:59:47 AM8/21/04
to
Hi,

> Eigentlich gehts hier um ein Servlet, das auf einer anderen Maschine entwickelt
> wird.

Verwendest Du auch in beiden Fällen denselben Browser? Vergleiche doch
mal die http-Konversation, insbesondere den Komplex um die accept-*
Header.

Das kannst Du zum Beispiel mit der Mozilla-Erweiterung LiveHTTPHeaders.

Mir hat das schon ein paarmal die Augen geöffnet.

Ciao, MM
--
Marian Aldenhövel, Rosenhain 23, 53123 Bonn.
Fon +49 228 624013, Fax +49 228 624031.
http://www.marian-aldenhoevel.de
"nothing ever rolls and nothing ever rocks and
nothing's ever worth the cost"

Wolfgang Herfter

unread,
Aug 21, 2004, 11:45:29 AM8/21/04
to
Marian Aldenhövel wrote:
Hi,

> Verwendest Du auch in beiden Fällen denselben Browser? Vergleiche doch
ja ich nehme Firefox. Allerdings zeigt sich das Problem bei jedem anderen
Browser den ich verwendet habe. Selbst wenn ich die Zeichenkodierung
verändere (UTF-8 z.B.) ändert sich nix. Auf meiner Entwicklungsmaschine
dagegen tut sich schon was, die Umlaute verschwinden wenn ich UTF-8 nehme,
was ja auch richtig ist.
> Ciao, MM
cu
wolfgang

Paul Ebermann

unread,
Aug 21, 2004, 12:13:45 PM8/21/04
to
"Wolfgang Herfter" skribis:

> Um zu testen welche JavaVersion Umlaute darstellen kann habe ich dieses
> kleine Programm geschrieben .
> public class Umlaute {
> public static void main(String[] args)
> {
> System.out.println("äääöööüüü");
> }
> }
> Mit der ersten Version kommen die Umlaute, die zweite liefert ????.

Nur vier Fragezeichen?

Hast du zwischendurch neukompiliert?

Was hier ausgegeben wird, hängt
(a) von der Einstellung der Konsole/des Terminals ab,
in dem du arbeitest,
(b) von der System-Property file.encoding.

(c) vom Encoding des Editors, in dem du die Datei speicherst
(d) vom Encoding des Compilers, mit dem du die Datei kompilierst.

(a) und (b) sowie (c) und (d) sollten jeweils auf das
gleiche eingestellt werden (und die Konsole sollte
fähig sein ...).

Mit der Darstellung in Webseiten hat (a) und (b) übrigens
nichts zu tun, dagegen (c) und (d) schon. Hier ist auch
noch wichtig, dem Browser gas gleiche zu geben, wie man
behauptet, zu geben.


HTH
Paul

Paul Ebermann

unread,
Aug 21, 2004, 12:06:29 PM8/21/04
to
"Marcus Woletz" skribis:

> das Thema hatten wir vor einiger Zeit schonmal hier. Werfe doch
> mal Google an.
>
> Meine Idee: Der Zeichensatz deines Editors passt nicht zum
> Zeichensatz des Compilers oder der Laufzeitumgebung:
>

[...]


> 2.) die Umlaute in der Zeichenkette direkt als Unicode-Zeichen
> angeben oder

[...]


> Mir persönlich gefällt 2.) am besten, da man damit
> von irgendwelchen Zeichensatzproblemen gänzlich befreit ist.

Und wenn man es bequemer haben will, kann man "normal tippen",
und nachher native2ascii (ist in jedem JDK dabei) benutzen.


Paul

Bernd Eckenfels

unread,
Aug 21, 2004, 2:17:57 PM8/21/04
to
Wolfgang Herfter <her...@ypso.org> wrote:
> Um zu testen welche JavaVersion Umlaute darstellen kann habe ich dieses
> kleine Programm geschrieben .

wo hast du es compiliert? Nur einmal und dann das Class File getestet?

> Mit der ersten Version kommen die Umlaute, die zweite liefert ????.

Also entweder beim compilieren hat der javac Probleme den Zeichensatz der
Quelldatei falsch verstanden zu haben (schreib sie in UTF-8 und gib es an
(-encoding=UTF-8), oder bei der Ausgabe ist das Terminal in (z.b) UTF8 mode
und die VM weiss das nicht. Schau mal nach den Einstellungen von LANG und
LC_

Gruss
Bernd
--
eckes privat - http://www.eckes.org/
Project Freefire - http://www.freefire.org/

Wolfgang Herfter

unread,
Aug 21, 2004, 11:26:20 PM8/21/04
to
Bernd Eckenfels wrote:
Hallo,

> wo hast du es compiliert? Nur einmal und dann das Class File getestet?
compiliert habe ich es auf dem Webserver und jedesmal neu mit den
unterschiedlichen Java Versionen.

>
>> Mit der ersten Version kommen die Umlaute, die zweite liefert ????.
>
> mode und die VM weiss das nicht. Schau mal nach den Einstellungen von LANG
> und LC_
Ich hatte schon die Vermutung das es an den Einstellungen liegen könnte.
LANG ich allen möglichen Varianten auspropiert (de, de_De, de_DE@euro) und
LC ebenso.

Eigentlich gehts hier um ein Servlet, das auf
einer anderen Maschine entwickelt wird. Ich erstelle ein WAR File und sende
das per FTP an meinen Webserver. Um nun zu vermeiden, das Probleme
auftauchen die durch unterschiedliche Versionen hervorgerufen werden, habe
ich beide Maschinen mit den gleichen Tomcat sowie Java Versionen versehen.
War wohl nix. Auch unterscheiden sich die Maschinen nur durch die BS
Version.
Strange echt.
>
> Gruss
> Bernd
Grüsse wolfgang

Wolfgang Zitzelsberger

unread,
Aug 22, 2004, 8:20:23 AM8/22/04
to
> Auf meinem Webserver (Suse 8.1) gelingt es mir nicht Umlaute unter der
...

> meiner Entwicklungsmaschine (Suse 9.1) laufen und hier werden die Umlaute
> dargestellt.
Bei SuSE 9.1 ist das file encoding standardmäßig UTF8. Vergleiche doch
mal, ob in /etc/sysconfig/language RC_LANG="de_DE@euro" eingestellt ist.
Ich hatte das gleiche Problem. Ich nahm YAST um das encoding von SuSE
9.1 zu ändern: System/Sprache wählen/Details/"UTF-8 als Kodierung
verwenden" abwählen.

Schöne Grüße,
Wolfgang

Wolfgang Herfter

unread,
Aug 22, 2004, 9:29:16 AM8/22/04
to
Hi,
danke für Dein Antwort.

> (a) und (b) sowie (c) und (d) sollten jeweils auf das
> gleiche eingestellt werden (und die Konsole sollte
> fähig sein ...).
Dem ist so.

>
> Mit der Darstellung in Webseiten hat (a) und (b) übrigens
> nichts zu tun, dagegen (c) und (d) schon. Hier ist auch
(d) war mir neu. Da ich mit Netbeans arbeite war das ein wirklich guter
Hinweis. Jetzt werden die Mails mit Umlaute verschickt, aber noch nicht
angezeigt bzw. sie werden nicht mit Umlaute empfangen. Da sind schon im
Logfile mit ??? versehen.

> noch wichtig, dem Browser gas gleiche zu geben, wie man
> behauptet, zu geben.
Was meinst Du damit ? Ich habe auf meiner Website den Eintrag
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
> HTH
> Paul
Viele Grüße
Wolfgang

Wolfgang Herfter

unread,
Aug 22, 2004, 4:20:02 PM8/22/04
to
Hallo,
irgendwie scheint da der Wurm drin zu sein.
Zu Anfang lade ich eine HTML Seite, da kann ich Umalute darstellen, aber
sobald das Servlet geladen wird ist Schluss mit Umlaute.
Ich arbeite übrigens mit Netbeans 3.6. Kennt jemand da eine Einstellung die
vorgenommen werden muss ?

Danke Wolfgang

Wolfgang Herfter

unread,
Aug 22, 2004, 4:53:31 PM8/22/04
to
Hallo Wolfgang

> mal, ob in /etc/sysconfig/language RC_LANG="de_DE@euro" eingestellt ist.
habe ich schon angeschaut. Das ist OK. Und bei locale werden alle Einträge,
bis auf LC_ALL mit de_DE@euro dargestellt.

> Ich hatte das gleiche Problem. Ich nahm YAST um das encoding von SuSE
> 9.1 zu ändern: System/Sprache wählen/Details/"UTF-8 als Kodierung
> verwenden" abwählen.
Habe ich auch durchgeführt, aber keine Änderung.
Auf dem Webserver mit Suse 8.1 glaube ich langsam, das es eine
Einstellungsfrage von Tomcat ist.
Binn jedenfalls immer noch sehr ratlos. :-(
Danke für die Antwort.
>
> Schöne Grüße,
> Wolfgang

Schöne Grüße Wolfgang

Wolfgang Zitzelsberger

unread,
Aug 22, 2004, 7:05:58 PM8/22/04
to
> Habe ich auch durchgeführt, aber keine Änderung.
> Auf dem Webserver mit Suse 8.1 glaube ich langsam, das es eine
> Einstellungsfrage von Tomcat ist.
> Binn jedenfalls immer noch sehr ratlos. :-(
Siehst du die Umlaute, wenn du die Seite mit vi betrachtest (auf beiden
Maschinen)?

Wolfgang

Wolfgang Herfter

unread,
Aug 23, 2004, 2:07:01 AM8/23/04
to
Guten Morgen,

> Siehst du die Umlaute, wenn du die Seite mit vi betrachtest (auf beiden
> Maschinen)?
Auf der Entwicklungsmaschine schon. Dort werden sie auch richtig in die DB
gespeichert.
Auf dem Webserver werden die schon mit ?? dargestellt. Ebenso Mails die vom
Servlet empfangen werden kommen schon mit diesen ?? an und werden auch so
in der DB gespeichert. In der DB (Webserver) können aber Umlaute
gespeichert werden, das habe ich ausprobiert.

>
> Wolfgang
wolfgang

Frank Streitzig

unread,
Aug 23, 2004, 3:29:29 AM8/23/04
to
Am Sun, 22 Aug 2004 22:53:31 +0200 schrieb Wolfgang Herfter
<her...@ypso.org>:

[snip]


> Auf dem Webserver mit Suse 8.1 glaube ich langsam, das es eine
> Einstellungsfrage von Tomcat ist.

[snip]

Ich starte meinen Tomcat mit folgender JVM-Parameter:
JAVA_OPTS="-Dfile.encoding=ISO8859_1 -Xms256m -Xmx512m
-Djava.awt.headless=true"

Wenn du es auf UTF änderst, vielleicht hilft es.

Gruß Frank

Wolfgang Zitzelsberger

unread,
Aug 23, 2004, 4:33:05 AM8/23/04
to
> Auf dem Webserver werden die schon mit ?? dargestellt. Ebenso Mails die vom
> Servlet empfangen werden kommen schon mit diesen ?? an und werden auch so
> in der DB gespeichert. In der DB (Webserver) können aber Umlaute
> gespeichert werden, das habe ich ausprobiert.
Zwei Fragezeichen deuten darauf hin, dass deine Files UTF-8 kodiert
sind. Wenn du das nicht unbedingt benötigst, solltest du es ändern.
Mails enthalten immer ein separates Encoding. Das hat mit deinem
File-Encoding-Problem erstmal nichts zu tun, wirf nicht alles in einen
Topf nur weil das Symptom das selbe ist. Prinzipiell kann für jede
Resource (File, Mail, DB) das Encoding angegeben werden. Du kannst Mails
also ISO88591_1, UTF-8 oder anders kodiert erhalten. Das hängt von den
Einstellungen des E-Mail Clients ab.
Löse zuerst einmal das Problem mit deinem File Encoding. Zwei
Fragezeichen stehen für zwei Bytes - das bedeutet in deinem Fall UTF-8.
Ändere das auf deiner Entwicklungsmaschine, indem du die Änderungen
vornimmst, die ich schon erwähnte und die Datei nochmal speicherst.
Dannach sollten beide Maschinen die Datei korrekt darstellen können.

Schöne Grüße,
Wolfgang

Bernd Eckenfels

unread,
Aug 23, 2004, 4:48:36 AM8/23/04
to
Wolfgang Herfter <her...@ypso.org> wrote:
> Auf dem Webserver werden die schon mit ?? dargestellt. Ebenso Mails die vom
> Servlet empfangen werden kommen schon mit diesen ?? an und werden auch so
> in der DB gespeichert. In der DB (Webserver) können aber Umlaute
> gespeichert werden, das habe ich ausprobiert.

Entschuldige, aber in deinem Orginalpost ging es um source der ein
System.out verwendet, inzwischen bist du bei kaputten Umlauten in
Datenbanken (über den Umweg mit kaputten Umlauten in Servlets). Ich würde
dir empfehlen mal bei einem Problem zu bleiben. Hast du das javaprogramm mit
-encoding compiliert und dir die ausgabe mal mit "od -x" angesehen? Solange
-das nicht tut wuerde ich alles andere erst mal liegen lassen. Die
-Verwendung von expliziten unicode sequenzen kann auch helfen dein Problem
-zu debuggen.

Wolfgang Herfter

unread,
Aug 23, 2004, 5:25:11 AM8/23/04
to
> Entschuldige, aber in deinem Orginalpost ging es um source der ein
> System.out verwendet, inzwischen bist du bei kaputten Umlauten in
Das ist ein Testprogramm gewesen, um herauszufinden warum die Umlaute nur in
einer Javaversion dargestellt werden können.
> mit -encoding compiliert und dir die ausgabe mal mit "od -x" angesehen?
ja das habe ich. Ich habe alle Varianten dieser Parameter,die ich im Netz
gefunden habe, auspropiert. Es ändert sich schlicht nichts.
Da ja nur Fragezeichen kommen erzeugt od -x nur die Hexwerte für
Fragezeichen.

> Solange -das nicht tut wuerde ich alles andere erst mal liegen lassen. Die
> -Verwendung von expliziten unicode sequenzen kann auch helfen dein Problem
> -zu debuggen.
Wenn ich diese einsetze, dann werden die Umlaute richtig dargestellt.
Was mir nicht klar ist, wie wichtig sind Apace Einstellungen für Tomcat.
Bisher hatte ich geglaubt, das Tomcat alleine für Servlet zuständig ist, da
es ja auch läuft wenn Apapche nicht gestartet ist.

>
> Gruss
> Bernd
Grüsse
Wolfgang

Bernd Eckenfels

unread,
Aug 23, 2004, 5:25:08 AM8/23/04
to
Wolfgang Herfter <her...@ypso.org> wrote:
> Wenn ich diese einsetze, dann werden die Umlaute richtig dargestellt.

Na also, dann ist dein Problem im encoding der source files.

> Was mir nicht klar ist, wie wichtig sind Apace Einstellungen für Tomcat.

Fuer das Testprogramm garnicht. :)

Wolfgang Herfter

unread,
Aug 23, 2004, 5:46:56 AM8/23/04
to
> Zwei Fragezeichen deuten darauf hin, dass deine Files UTF-8 kodiert
Was ich nicht verstehe, was haben eigentlich das Abspeichern der Files mit
damit zu tun.
Ich speichere alle Daten in einer Datenbank. Und da habe ich keine Probleme.
Es sind Probleme beim darstellen der Webseiten und sobald ich Daten erhalte
mit Umlaute (Mails z.B.)

> File-Encoding-Problem erstmal nichts zu tun, wirf nicht alles in einen
Das werden sie. Hier mal ein Auszug wie ich die Mails versende.
////////////////////////
MimeBodyPart text = new MimeBodyPart();
text.setHeader("Content-Type" , text.getContentType() );
text.setHeader("Content-Transfer-Encoding", "quoted-printable");
text.setHeader( "charset=ISO-8859-1","format=flowed");
////////////////////////

> Ändere das auf deiner Entwicklungsmaschine, indem du die Änderungen
Habe ich durchgeführt. Mittels der Env Variablen
CATALINA_OPTS=-Dfile.encoding=iso-8859-1;export CATALINA_OPTS
JAVA_OPTS='-Duser.language=de -Duser.country=DE
-Dfile.encoding=iso-8859-1';export JAVA_OPTS

> vornimmst, die ich schon erwähnte und die Datei nochmal speicherst.
> Dannach sollten beide Maschinen die Datei korrekt darstellen können.
Leider nicht.
Kann es vielleicht ein Zusammenspiel zwischen Tomcat und Apache liegen ?
Denn es ist doch sehr merkwürdig, das es auf der Entwicklungsmaschine
funktioniert und auf dem Webserver nicht. Das einzige was es da an
Unterschiede gibt sind die BS Version (8.1 WEbserver, 9.1 Entwicklung) und
die AapacheVersion. Aber ich dachte bisher immer das Apache und Tomcat zwei
paar Schuhe sind.
> Schöne Grüße,
> Wolfgang
Schöne Grüße wolfgang

Wolfgang Herfter

unread,
Aug 23, 2004, 5:56:17 AM8/23/04
to
Bernd Eckenfels wrote:

> Wolfgang Herfter <her...@ypso.org> wrote:
>> Wenn ich diese einsetze, dann werden die Umlaute richtig dargestellt.
>
> Na also, dann ist dein Problem im encoding der source files.

Entschuldige bitte, aber ich stehe total auf dem Schlauch. Wieso ????
Es wird doch das Class File ausgeführt oder ??? Und im Source wird doch nur
gesagt, printe die Umlaute aus. Bisher dachte ich immer das es am System
liegt, was da dann für Zeichen kommen.
Offensichtlich ist das Falsch.
> Gruss
> Bernd
Grüsse
Wolfgang

Achim Peters

unread,
Aug 23, 2004, 6:32:13 AM8/23/04
to
Wolfgang Herfter wrote:

> Bernd Eckenfels wrote:
>
>
>>Wolfgang Herfter <her...@ypso.org> wrote:
>>
>>>Wenn ich diese einsetze, dann werden die Umlaute richtig dargestellt.
>>
>>Na also, dann ist dein Problem im encoding der source files.
>

> Es wird doch das Class File ausgeführt oder ??? Und im Source wird doch nur
> gesagt, printe die Umlaute aus.

Nein, im Source-File stehen ausserdem auch noch die Umlaute selbst drin.
Ein File besteht aber ja nur aus Bytes, also "Zahlen". Welche Zahl nun
welchem Buchstaben entspricht, ist eine reine Interpretationsfrage. Du
musst dem Compiler, der ja das Source-File erstmal einliest, sagen, wie
er die Zahlen zu interpretieren hat. Erst dann kann er es richtig lesen,
und ein entsprechendes Class-File erzeugen (in dem dann auch wieder die
Umlaute drinstehen - diesmal aber durch anderne Zahlen repräsentiert).

Entspricht die Interpretation der Zahlen im Source-File durch den
Compiler nicht der Deinen, bzw. der Deines Editors, kommt es zum
beobachteten Effekt.

Warum es mit Unicode-Zeichen funktioniert, liegt daran, dass diese im
Sourcecode aus den Zeichen '\' und '0'-'9' bestehen, für die es im
allgemeinen weit weniger Interpretationsvarianten gibt als für Umlaute.
Klingt komisch, ist aber so.

Bye
Achim

Sven Köhler

unread,
Aug 23, 2004, 1:32:56 PM8/23/04
to
> Auf meinem Webserver (Suse 8.1) gelingt es mir nicht Umlaute unter der
> Tomcat 5.0.27 darzustellen.

Und wie versuchst du diese darzustellen? HTML kann ohne Probleme
Unicode-Zeichen darstellen. Dazu musst du noch nichtmal UTF-8 als
Charset verwenden oder so ...

Stelle einfach alle Zeichen mit einem Code >127 durch eine &#xxx;
Sequenz dar, wobei xxx die Nummer des Unicode-Zeichens ist.

Beispiel:
char c = 'ö';
String html = "&#"+c+";";

> Um zu testen welche JavaVersion Umlaute darstellen kann habe ich dieses
> kleine Programm geschrieben .
> public class Umlaute {
> public static void main(String[] args)
> {
> System.out.println("äääöööüüü");
> }
> }

Dein Test-Programm ist schlecht gewählt. Da du die Umlaute direkt in den
Quellcode schreibst, werden sie Eventuell von dem Compiler vermurkst.
Der Compiler und dein Editor müssen mit dem selben Charset arbeiten.
Besser wäre es, datt dem Umlaut "ö" einfach mal "\xF8" zu schreiben.
(Ich glaube ein ö ist F8, bin mir recht sicher, aber nicht ganz).

Außerdem schreibst du mit System.out auf die Console. Hier werden die
Unicodezeichen z.B. nach ISO-8859-1 konvertiert usw.
Nicht immer - z.B. unter Windows - wählt die JVM das richtige Charset.

> Was mache ich da falsch ?

Du musst dich intensiv damit auseinandersetzen, wann, wie und warum von
diversen Charsets nach Unicode und zurück konvertiert wird. Am besten
ist allerdings, jede Konvertierung zu vermeiden. Bei HTML ist das sehr
einfach. Entweder produziert man UTF-8 Webseiten, oder man verwendet
obige &#xxx;-Syntax für Zeichen jenseits der ASCII-Tabelle (das sind
genau die >127).

HTML/HTTP bieten aber auch Fallen. Man kann das Charset sowohl im
Content-Type HTTP-Header angeben, aber auch im HTML-Code als meta-Tag.
Informationen über das verwendete Charset gibt dir der Menüpunkt "Page
Info" in Mozilla und Firefox.

Wolfgang Herfter

unread,
Aug 23, 2004, 2:50:40 PM8/23/04
to
Vielen Dank Sven für Deine Antwort.
Nachdem ich es mittlerweile hinbekommen habe das jetzt überhaubt keine
Umlaute mehr angezeigt werden, ist dieser Teil Deiner Nachricht.

>Du musst dich intensiv damit auseinandersetzen,
genau der Ratschlag den ich zu beherzigen habe.
Denn so gehts nicht weiter.
Vielen Dank nochmal für Deine ausführliche Antwort. Die Informationen werden
mir weiterhelfen.
Jetzt werde ich mich mal auf die Suche machen nach einer Beschreibung, wie
das mit dem Encoding nun ist.
Danke nochmal an alle die mir geantwortet haben, ich habe viel dabei
gelernt.

Einen schönen Tag noch zusammen.
Bis demnächst

wolfgang

Paul Ebermann

unread,
Aug 23, 2004, 2:50:20 PM8/23/04
to
"Sven Köhler" skribis:

> > Auf meinem Webserver (Suse 8.1) gelingt es mir nicht Umlaute unter der
> > Tomcat 5.0.27 darzustellen.
>
> Und wie versuchst du diese darzustellen? HTML kann ohne Probleme
> Unicode-Zeichen darstellen. Dazu musst du noch nichtmal UTF-8 als
> Charset verwenden oder so ...
>
> Stelle einfach alle Zeichen mit einem Code >127 durch eine &#xxx;
> Sequenz dar, wobei xxx die Nummer des Unicode-Zeichens ist.
>
> Beispiel:
> char c = 'ö';
> String html = "&#"+c+";";

Naja - "&#"+(int)c+";" wäre richtiger.


> > Um zu testen welche JavaVersion Umlaute darstellen kann habe ich dieses
> > kleine Programm geschrieben .
> > public class Umlaute {
> > public static void main(String[] args)
> > {
> > System.out.println("äääöööüüü");
> > }
> > }
>
> Dein Test-Programm ist schlecht gewählt. Da du die Umlaute direkt in den
> Quellcode schreibst, werden sie Eventuell von dem Compiler vermurkst.
> Der Compiler und dein Editor müssen mit dem selben Charset arbeiten.
> Besser wäre es, datt dem Umlaut "ö" einfach mal "\xF8" zu schreiben.
> (Ich glaube ein ö ist F8, bin mir recht sicher, aber nicht ganz).

In Java schreibt man \u00F6. (F8 ist ø.)
Alternativ \370 (oktal).


Paul

Paul Ebermann

unread,
Aug 23, 2004, 2:37:43 PM8/23/04
to
"Wolfgang Herfter" skribis:

> > (a) und (b) sowie (c) und (d) sollten jeweils auf das
> > gleiche eingestellt werden (und die Konsole sollte
> > fähig sein ...).
>
> Dem ist so.
>
> > Mit der Darstellung in Webseiten hat (a) und (b) übrigens
> > nichts zu tun, dagegen (c) und (d) schon. Hier ist auch
>
> (d) war mir neu. Da ich mit Netbeans arbeite war das ein wirklich guter
> Hinweis. Jetzt werden die Mails mit Umlaute verschickt, aber noch nicht
> angezeigt bzw. sie werden nicht mit Umlaute empfangen.

Wie erstellst du die E-Mails?
(Wichtig: Wie kommt der Text in die E-Mails?)

> Da sind schon im
> Logfile mit ??? versehen.

Wie schreibst du ins Logfile?

Versuche mal, im Quelltext die \uxxxx-Notation zu verwenden?
Damit schließt du wenigstens eine Fehlerquelle aus.
\u00e4 = ä
\u00c4 = Ä
\u00f6 = ö
\u00d6 = Ö
\u00fc = ü
\u00dc = Ü
\u00df = ß

> > noch wichtig, dem Browser gas gleiche zu geben, wie man
> > behauptet, zu geben.
>
> Was meinst Du damit ? Ich habe auf meiner Website den Eintrag
> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">

Und wie gibst du die Daten aus?


Paul
(OK, einige der Fragen sind schon in den anderen Beiträgen
des Threads diskutiert ...)
PS: Wenn du beim Antworten immer eine Leerzeile zwischen
deinem Beitrag und dem Zitat lässt, wird es leichter lesbar.

Paul Ebermann

unread,
Aug 23, 2004, 2:45:07 PM8/23/04
to
"Wolfgang Herfter" skribis:

> > Solange -das nicht tut wuerde ich alles andere erst mal liegen lassen. Die
> > -Verwendung von expliziten unicode sequenzen kann auch helfen dein Problem
> > -zu debuggen.
>
> Wenn ich diese einsetze, dann werden die Umlaute richtig dargestellt.

Dann haben wir den (oder zumindest einen) Verursacher gefunden.

Mach mal

System.out.println("\u00e4 = ä");
System.out.println("\u00c4 = Ä");
System.out.println("\u00f6 = ö");
System.out.println("\u00d6 = Ö");
System.out.println("\u00fc = ü");
System.out.println("\u00dc = Ü");
System.out.println("\u00df = ß");

und variiere so lange die Einstellungen des Editors
und des Compilers (-encoding), bis jeweils das gleiche
ausgegeben wird.

(Eine Begründung hat ja Achim schon gegeben.)


Paul

Sven Köhler

unread,
Aug 23, 2004, 7:23:17 PM8/23/04
to
>>Beispiel:
>>char c = 'ö';
>>String html = "&#"+c+";";
>
> Naja - "&#"+(int)c+";" wäre richtiger.

Ups, und ich wollte erst noch ...

0 new messages