ich habe ein Applet und möchte dies nun gerne mehrsprachig machen.
Für die Texte verwende ich Variablen, die ich entsprechend der Sparche,
aus einer DB fülle d.h ich arbeite ohne Resource-Files (ich glaube so heißen die Files ?)
Die japanischen Zeichen stehen in der DB in der Form „xxxx“. Sie sind ursprünglich für HTML gedacht. Nun würde ich dies gerne in meinem Applet in einem JLabel anzeigen.
Fragen:
ist dies überhaupt mit der HTML-Form „xxxx“ möglich oder geht das nur mit „\uxxxxxx“
was muß man tun damit die Zeichen angezeigt werden. Die Sache sollte unter Windows und Unix laufen wobei Windows wichtiger wäre.
Die japanischen Zeichen stehen in der DB in der Form
„�xxxx“. Sie sind ursprünglich für HTML gedacht.
Sind das Unicode-Hex-Werte ? Wenn ja:
String(byte[] bytes, String charsetName)
mit charsetName gesetzt nach:
UTF-16BE UnicodeBigUnmarked Sixteen-bit Unicode Transformation Format, big-endian byte order
UTF-16LE UnicodeLittleUnmarked Sixteen-bit Unicode Transformation Format, little-endian byte order
ist dies überhaupt mit der HTML-Form „�xxxx“ möglich oder
geht das nur mit „\uxxxxxx“
Auszug aus Selfhtml:
"Seit HTML 4.0 kann jedes Zeichen aus dem Zeichenvorrat nach (…)Unicode-Standard notiert werden. Beliebige Zeichen, aus diesem gewaltigen Zeichenvorrat können in durch eine spezielle numerische Notation erzeugt werden. Das Notations-Schema für solche numerischen Notationen lautet:
[x][Nummer];
Beispiele einer Notation in HTML:
α
α
ende Auszug.
Also wenn dann mit &. Allerdings unterstützt java 1.4 offizel nur HTML 3.2, und nicht 4.0. Inoffizel geht aber ein Teil von 4.0 schon. Müsste man also testen.
was muß man tun damit die Zeichen angezeigt werden. Die
Sache sollte unter Windows und Unix laufen wobei Windows
wichtiger wäre.
Die verwendete Schrift muss die Zeichen enthalten. Die Quizfrage wär also welche der Standart-schriften den kompletten Unicodesatz enthält. Sorry, da kann ich nicht helfen.
&_#_[x][Nummer];
Beispiele einer Notation in HTML:
&_#_945;
&_#_x3B1;
(Man muss die „_“-Zeichen weglassen um auf den HTML-Standart
zu kommen. Leider schluckt der W-W-W-Parser das Zeichen ohne
„_“)
ist etwas mühsam das hier darzustellen, aber es geht:
im Eingabefeld das vorangestellte & als & schreiben, dann wird aus
α
α
Aber Vorsicht: wenn du erst über die Vorschau gehst und dann von dort den Artikel abschickst wird der Inhalt nochmal geparst, dann wird aus α in der Vorschau wieder α.
Du hast natürlich recht mit der HTML-Notation. Mir ist beim posten nicht aufegfallen, dass der die Zeichen nicht übernommen hat.
Kannst Du jetz noch einem Anfänger verraten wie er den HTML-String
&_#_x3B1 ("_" Unterstich natürlich wieder wegdenken) in das Byte[] bekommt. Ich habe noch nie mit Byte gearbeitet.
Den String den ich dann erhalte kann ich doch dann in mein JLabe mit setText() übernehmen. Mit set Font() muß ich dann noch die richtige schrift setzen. „Lucida Sans Unicode“ sollte eigentlich gehen.
Wäre das dann so richtig?
Danke
Albert
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Kannst Du jetz noch einem Anfänger verraten wie er den
HTML-String
&_#_x3B1 ("_" Unterstich natürlich wieder wegdenken) in das
Byte[] bekommt. Ich habe noch nie mit Byte gearbeitet.
Also die einfache Variante:
String code = „&_#_x3B1“; //oder „&_#_3221“ bei Decimal-notation
BigInteger BIG;
if (code.indexOf ("&_#_x") != -1){
//Es ist in Hex-Notation:
String nummer = code.substring (3);
BIG = new BigInteger (nummer,16);
} else {
//Es ist in Decimal-Notation:
String nummer = code.substring (2);
BIG = new BigInteger (nummer,10);
}
byte[] b = BIG.toByteArray();
("\_" weglassen. Heavy's Methode funktioniert zwar, aber ich hab jetzt nicht die Nerven dafür...)
b[0] und b[1] sind die 2 wichtigen Werte. Solle mehr rauskommen =\> wegschneiden. Auf BigEndian und LittleEndian aufpassen (=testen).
> Den String den ich dann erhalte
String s = "das was vor dem Zeichen steht" + new String (b,"UTF-16LE") + "das was nach dem Zeichen steht";
> kann ich doch dann in mein
> JLabe mit setText() übernehmen.
Korrekt. So war das gedacht. Oder eben auf die HTML-4.0 Fähigkeiten vertrauen. Es kann gehen, muss aber nicht.
> Mit set Font() muß ich dann
> noch die richtige schrift setzen. "Lucida Sans Unicode" sollte
> eigentlich gehen.
>
> Wäre das dann so richtig?
Kann ich dir so nicht sagen, ich kenn die Schrift nicht... Aber das Prinzip ist OK.
cu