ich programmiere hauptsächlich unter linux mit eclipse.
Die Anwendung wird aber auch unter windows genutzt.
Was kann ich denn machen, damit Umlaute auf dem client richtig angezeigt
werde, unabhängig vom bs ?
Hans
> Was kann ich denn machen, damit Umlaute auf dem client richtig angezeigt
> werde, unabhängig vom bs ?
Du könntest dein eventuelles Problem genauer schildern. Am besten
berücksichtigst du dabei die Hinweise in http://laeuftnicht.mpaap.de,
besonders den letzten Absatz.
Gruß,
Michael
Strings externalisieren.
Oder den Workspace auf iso-8859-1 einstellen. (Dann gibt es aber wieder
Probleme, wenn das Programm auf einem Mac laufen soll....)
-stef
Ich dachte meine Frage wäre eindeutig.
Umlaute des Programmes werden auf meinem Linux Rechner - sofern ich
unter Linux Programmiere - richtig dargestellt.
Starte ich das gleiche Programm unter Windows, werden Umlaute nicht
richtig dargestellt.
Wenn ich unter Windows Eclipse das Programm mit dem unter Windows
vorhandenen Zeichensatz schreibe und laufen lasse, dann stimmen die
Umlaute unter windows, aber wieder nicht mehr wenn ich das Programm
unter Linux laufen lasse.
Das ist wohl KEIN JAVA Problem, aber es muss doch irgendeine Lösung
geben, damit ich unabhängig, unter welchem BS ich schreibe, die Umlaute
in jedem (oder wenigstens unter win / Linux) richtig dargestellt werden.
Hans
hmmm... das wäre zu vernachlässigen.
Gibt es keinen "Zeichencode", der für alle gilt ?
Hans
Du meinst bei der Ausgabe auf die Console mit System.out?
> Wenn ich unter Windows Eclipse das Programm mit dem unter Windows
> vorhandenen Zeichensatz schreibe und laufen lasse, dann stimmen die
> Umlaute unter windows, aber wieder nicht mehr wenn ich das Programm
> unter Linux laufen lasse.
Meinst du Umlaute im Quelltext? Wenn ja so solltest du UTF-8 oder Latin1
Encoding fuer deine .java files verwenden, dies deinem File Editor und
deinem Compiler mitteilen. Oder du vermeides tsonderzeichen (\0xxxxx
stattdessen). Jedenfalls musst du es angeben und nicht den Platform Default
verwenden.
Gruss
Bernd
> hmmm... das wäre zu vernachlässigen.
> Gibt es keinen "Zeichencode", der für alle gilt ?
Diverse, man muss sich nur einigen. Einstellen kann man das entweder an
der Workspace (*1) oder am Projekt (*2).
Hth
*1)
Aus dem Menu: Window | Preferences, dann General => Workspace => "Text
file encoding"
*2)
Aus dem Menu: Project | Properties, dann Resource "Text file encoding"
Du musst wissen, in welchem Encoding Deine Text in die Applikation
gelangen. Nicht nur aus Gründen der Lokalisierung verbietet es sich,
Texte direkt im Quelltext zu vereinbaren. Dort stehen sie nämlich im
Encoding der Entwicklungsplattform.
Besser und richtig: Text auslagern und mit ResourceBundle arbeiten. Die
Texte werden dabei in Textdateien im java.util.Properties Format
gehalten. Daraus ergibt sich die Bedingung, daß sie im ISO-8859-1
Encoding vorliegen müssen. Zeichen, die nicht durch ISO abgedeckt sind,
müssen entsprechend maskiert werden (\uXXXX Notation).
Gruß,
Christoph
genau das meinte ich.
Und ja, es ist wohl nicht optimal, Texte in den SourceCode zu schreiben
- ich denke zwar nicht, dass mein PRG in andere Sprachen übersetzt
werden würde, aber dennoch ein richtiger Aspekt.
> Besser und richtig: Text auslagern und mit ResourceBundle arbeiten. Die
> Texte werden dabei in Textdateien im java.util.Properties Format
> gehalten.
gibt es da irgendwo ein einfaches Beispiel, wie man das macht ?
Daraus ergibt sich die Bedingung, daß sie im ISO-8859-1
> Encoding vorliegen müssen. Zeichen, die nicht durch ISO abgedeckt sind,
> müssen entsprechend maskiert werden (\uXXXX Notation).
gibt es irgendwo ein Tabelle, welches Zeichen was ist in der \uxxxx
Notation ?
Hans
>> Besser und richtig: Text auslagern und mit ResourceBundle arbeiten. Die
>> Texte werden dabei in Textdateien im java.util.Properties Format
>> gehalten.
>
> gibt es da irgendwo ein einfaches Beispiel, wie man das macht ?
Kann ich Dir geben
messages.properties:
colour=Farbe
messages_en.properties:
colour=Colour
messages_en_us.properties:
colour=Color
Diese drei Dateien müssen parallel zueinander in einem Verzeichnis
liegen. Der sog. "basename" ist "messages".
Der Zugriff erfolgt dann über
ResourceBundle#getBundle(String basename, Locale locale); und
ResourceBundle#getString(String key);
ResourceBundle versucht zunächst die best-passende Variante zu laden,
für LOCALE.UK wäre das z.B. messages_en_uk.properties. Da diese nicht
existiert, wir das Land der Locale ignoriert und nur die Sprache
verwendet, also messages_en.properties. Existiert auch diese nicht, wird
auf das default-Bundle zurückgegriffen, in diesem Falle messages.properties.
> Daraus ergibt sich die Bedingung, daß sie im ISO-8859-1
>> Encoding vorliegen müssen. Zeichen, die nicht durch ISO abgedeckt sind,
>> müssen entsprechend maskiert werden (\uXXXX Notation).
>
> gibt es irgendwo ein Tabelle, welches Zeichen was ist in der \uxxxx
> Notation ?
Bestimmt. Mach ich mir aber keine Gedanken drum. Die Netbeans IDE
liefert sowohl einen komfortablen Editor für ResourceBundle Dateien mit
und kümmert sich auch um die Maskierung, sofern notwendig.
Gruß,
Christoph
sehr gut! Werde ich gleich mal ausprobieren.
> Bestimmt. Mach ich mir aber keine Gedanken drum. Die Netbeans IDE
> liefert sowohl einen komfortablen Editor für ResourceBundle Dateien mit
> und kümmert sich auch um die Maskierung, sofern notwendig.
ich weiss... aber ich nutze eclipse.
Hans
> Christoph Dahlen schrieb:
>> Bestimmt. Mach ich mir aber keine Gedanken drum. Die Netbeans IDE
>> liefert sowohl einen komfortablen Editor für ResourceBundle Dateien mit
>> und kümmert sich auch um die Maskierung, sofern notwendig.
>
> ich weiss... aber ich nutze eclipse.
Wie wäre es mit dem Eclipse ResourceBundle Editor?
http://sourceforge.net/projects/eclipse-rbe/
Sascha Broich
--
Er will sie nicht?
Er, will sie nicht?
Er will, sie nicht?
Er will sie, nicht?
bei mir weiss er nichts mit "ResourceBundle" und "Locale" anzufangen.
Brauche ich noch ein Plugin ?
Hans
> bei mir weiss er nichts mit "ResourceBundle" und "Locale" anzufangen.
> Brauche ich noch ein Plugin ?
java.util.ResourceBundle und java.util.Locale gibts seit Java 1.1.
Ja, sorry, habe ich dann auch gefunden ...
allerdings findet er die resource nicht.
ResourceBundle bundle = ResourceBundle.getBundle("messages");
System.out.println(bundle.getString("exit"));
Ich habe sie im root des Projektes abgelegt - bekomme immer die Meldung
Exception in thread "main" java.util.MissingResourceException: Can't
find bundle for base name messages, locale de_DE
at
java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1508)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1262)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:717)
at de.repcom.osfaktura.aStartups.Test.machWas(Test.java:17)
at de.repcom.osfaktura.aStartups.Test.<init>(Test.java:12)
at de.repcom.osfaktura.aStartups.Test.main(Test.java:9)
muss man in irgendeiner Form den Pfad zu der Datei angeben ?
Hans
> allerdings findet er die resource nicht.
> muss man in irgendeiner Form den Pfad zu der Datei angeben ?
Die Properties-Dateien müssen im Classpath liegen und dann auch wie eine
Klasse relativ zum Classpath-Root angesprochen werden.
Beispiel Web-Anwendung
/WEB-INF/classes/my/package/messages.properties
Macht dann
ResourceBundle.getBundle("my.package.messages")
Gruß,
Christoph
> Ich habe sie im root des Projektes abgelegt - bekomme immer die Meldung
>
>
> Exception in thread "main" java.util.MissingResourceException: Can't
> find bundle for base name messages, locale de_DE
> at
> java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1508)
>
> at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1262)
> at java.util.ResourceBundle.getBundle(ResourceBundle.java:717)
> at de.repcom.osfaktura.aStartups.Test.machWas(Test.java:17)
> at de.repcom.osfaktura.aStartups.Test.<init>(Test.java:12)
> at de.repcom.osfaktura.aStartups.Test.main(Test.java:9)
>
> muss man in irgendeiner Form den Pfad zu der Datei angeben ?
>
> Hans
Frage: Wieso lässt Du Dir eigentlich die Arbeit nicht von Eclipse
abnehmen, wenn Du sowieso Eclipse verwendest? (Source->Externalize
Strings) Einfacher geht's doch eigentlich nicht mehr?
-stef
oohh... das kannte ich nicht (okok, kenne mich noch nicht so gut aus in
eclipse)
Hans