Discussion:
[STRING] UTF-8 Zeichen einsetzen
(zu alt für eine Antwort)
Jakob Lenfers
2006-06-19 08:20:37 UTC
Permalink
Hi,

ich möchte gerne in einem String bestimmte Zeichenfolgen durch ein
UTF-8-Zeichen ersetzen. Wie erstelle ich einen String mit einem
UTF-8-Zeichen drin? Java nutzt AFAIK UTF-16, was muss ich machen,
damit UTF-8 genutzt wird? Gibt es da was?

TIA, Jakob, leider nicht sehr Java-Erfahren
Stefan Matthias Aust
2006-06-19 08:28:26 UTC
Permalink
Post by Jakob Lenfers
ich möchte gerne in einem String bestimmte Zeichenfolgen durch ein
UTF-8-Zeichen ersetzen. Wie erstelle ich einen String mit einem
UTF-8-Zeichen drin? Java nutzt AFAIK UTF-16, was muss ich machen,
damit UTF-8 genutzt wird? Gibt es da was?
UTF-8 ist ein Byte-Encoding für Strings. Strings sind Zeichenketten.
Somit gibt es streng genommen keine UTF-8 "Zeichen". Du kannst dir mit
String#getBytes("UTF-8") dir ein Bytearray mit einer
UTF-8-Repräsentation eines Strings holen.

Oder meinst du, du willst aus "AB" etwas wie \u0041\u0042 machen?
Dafür gibt es in Java keine Funktion, sowas must du selbst (am besten
über einen StringBuilder) implementieren.

Stefan
Jakob Lenfers
2006-06-19 08:46:02 UTC
Permalink
Post by Stefan Matthias Aust
Post by Jakob Lenfers
ich möchte gerne in einem String bestimmte Zeichenfolgen durch ein
UTF-8-Zeichen ersetzen. Wie erstelle ich einen String mit einem
UTF-8-Zeichen drin? Java nutzt AFAIK UTF-16, was muss ich machen,
damit UTF-8 genutzt wird? Gibt es da was?
UTF-8 ist ein Byte-Encoding für Strings. Strings sind Zeichenketten.
Somit gibt es streng genommen keine UTF-8 "Zeichen". Du kannst dir mit
String#getBytes("UTF-8") dir ein Bytearray mit einer
UTF-8-Repräsentation eines Strings holen.
Ich bin mir nicht sicher, ob ich selber so genau weiß, was ich
will. Sorry. :)

Ich möchte für ein Projekt einen Converter von BibTex in normal
lesbaren Text machen. Dieser Text soll dann mit Hilfe von struts und
Tomcat in einer Webanwendung dargestellt werden. Diese Webanwendung
sollte in UTF-8 darstellen, da ich denke, dass das die höchste
Zeichenvielfalt erlaubt und weit unterstützt ist.

In dem Converter muss ich aus {\~o} ein õ machen. (Ich hoffe es wird
richtig kodiert). Dabei habe ich jetzt zwei Probleme:

· Das ersetzen ist ja kein Problem. Aber wie erstelle ich einen String
mit dem õ, am besten indem ich den UTF-8-Code eingebe?
· Beim Ausgeben der Strings Richtung Struts/Webbrowser muss es dann
auch UTF-8 sein. Aber das könnte dann ja mit getBytes("UTF-8") zu
lösen sein, oder?

Danke für Deine Antwort.

Jakob
Jochen Theodorou
2006-06-19 12:55:20 UTC
Permalink
Jakob Lenfers schrieb:
[...]
Post by Jakob Lenfers
Ich möchte für ein Projekt einen Converter von BibTex in normal
lesbaren Text machen. Dieser Text soll dann mit Hilfe von struts und
Tomcat in einer Webanwendung dargestellt werden. Diese Webanwendung
sollte in UTF-8 darstellen, da ich denke, dass das die höchste
Zeichenvielfalt erlaubt und weit unterstützt ist.
In dem Converter muss ich aus {\~o} ein õ machen. (Ich hoffe es wird
· Das ersetzen ist ja kein Problem. Aber wie erstelle ich einen String
mit dem õ, am besten indem ich den UTF-8-Code eingebe?
zum Beispiel, ja. \u00F5; Oder du gibst alle Zeichen in Unicode in einen
Textdatei ein und covnertierst sie mit einem kleinem JavaProgramm in die
\uxxx;-Notation. Oder, du lässt die Datei wie sie ist und benutzt sie
direkt für das Mapping, dann baust du dir halt eine liste auf. Einmal
einlesen, zum Beispiel in deinen String oder ein char[] und fertig..
zumindest solange man keine 2 chars für diese Zeichen braucht ;) Aber
für die Fälle kannst du ja eine tweite Liste machen. Du kannst auch das
Mapping dort komplett reinschreiben anstatt es con Hand zu machen:

\~o=õ

oder wenn das "=" nciht geht, bzw. auch andere solche Zeichen nicht gehen:

\~o
õ

also mit newline, oder nach dem Schema Nummer=code und das 2 mal, einmal
für den BibTex-code und einmal für das Unicodezeichen.
Post by Jakob Lenfers
· Beim Ausgeben der Strings Richtung Struts/Webbrowser muss es dann
auch UTF-8 sein. Aber das könnte dann ja mit getBytes("UTF-8") zu
lösen sein, oder?
nein, die machst dir einen Writer und sagst ihm er soll UTF-8 ausgeben.
Siehe die Javadoku dazu.

Grusstheo
--
Jochen Theodorou
Groovy Tech Lead
Jakob Lenfers
2006-06-19 14:32:31 UTC
Permalink
Post by Jochen Theodorou
zum Beispiel, ja. \u00F5; Oder du gibst alle Zeichen in Unicode in
einen Textdatei ein und covnertierst sie mit einem kleinem
JavaProgramm in die \uxxx;-Notation. Oder, du lässt die Datei wie sie
[... weitere Tipps]
Danke, das klingt schonmal gut, dass ich einfach \... eingeben kann.
Post by Jochen Theodorou
Post by Jakob Lenfers
· Beim Ausgeben der Strings Richtung Struts/Webbrowser muss es dann
auch UTF-8 sein. Aber das könnte dann ja mit getBytes("UTF-8") zu
lösen sein, oder?
nein, die machst dir einen Writer und sagst ihm er soll UTF-8
ausgeben. Siehe die Javadoku dazu.
Gut, ich gucke mal. Danke.

Jakob
Stefan Ram
2006-06-19 18:57:05 UTC
Permalink
Post by Stefan Matthias Aust
Oder meinst du, du willst aus "AB" etwas wie \u0041\u0042 machen?
Dafür gibt es in Java keine Funktion, sowas must du selbst (am besten
über einen StringBuilder) implementieren.
Ich habe einmal in der Java SE 6 danach gesucht,
und kam schließlich auf folgende Annäherung:

public class Main
{ public static void main( final java.lang.String[] args)
throws java.io.IOException
{ final java.util.Properties properties = new java.util.Properties();
final java.io.ByteArrayOutputStream byteArrayOutputStream =
new java.io.ByteArrayOutputStream();
properties.put( "result", "nötig" );
properties.store( byteArrayOutputStream, "" );
final java.lang.String s = byteArrayOutputStream.toString();
java.lang.System.out.println( s.replaceAll( "[^\001]*?result=", "" )); }}

n\u00F6tig

Lesen Sie weiter auf narkive:
Loading...