ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
4456
4456
EMPFEHLEN
-
15.11.04 16:52 #1
- Registriert seit
- Aug 2004
- Beiträge
- 73
Hallo zusammen,
kann mir zufällig jemand sagen, wie ich Unicode-Text aus einem Swing-TextPane (meines Wissens verwendet das zugrunde liegende Document-Interface da standardmäßig unicode) in UTF-8 konvertiert?
Die folgenden Codezeilen haben leider nicht den erwünschten Effekt - Sonderzeichen wie ä,ö,ü,ß werden alle mittels Fragezeichen dargestellt.
Vielen Dank für eure Hilfe,
Peter
String text = "text aus swing-textPane";
byte[] byte_array = text.getBytes();
ByteArrayOutputStream out = new ByteArrayOutputStream();
out.write(byte_array);
text = out.toString("UTF-8");
-
15.11.04 17:34 #2
DataOutputStream hat eine Methode "writeUTF(String s)", die dürfte Dein Problem lösen können.
CU schnuffie
-
15.11.04 21:38 #3
- Registriert seit
- Aug 2004
- Beiträge
- 73
Hi schnuffie,
Vielen Dank für die schnelle Antwort, aber leider haut es auch mit dem folgenden Code immer noch nicht hin.
ByteArrayOutputStream out = new ByteArrayOutputStream();
DataOutputStream dataOut = new DataOutputStream(out);
dataOut.writeUTF(text_input);
String text = out.toString("UTF-8");
Die XML-Datenbank, die ich benutze (eXist --> erwartet UTF-8), beschwert sich weiterhin mit der Fehlermeldung "Invalid byte 2 of 3-byte UTF-8 sequence", immer wenn ich versuche, Sonderzeichen zu speichern.
Habe ich etwas falsch gemacht?
Außerdem werden irgendwie zwei unidentifizierbare Zeichen am Anfang hinzugefügt, die ich dann zwar mit
new String(oldString.substring...)
weggelesen habe, für deren Auftreten ich aber gar keine Erklärung habe. Du vielleicht?
Grüße, PeterGeändert von peter_mueller (16.11.04 um 10:22 Uhr)
-
20.11.04 01:15 #4
- Registriert seit
- Aug 2004
- Beiträge
- 73
Hallo zusammen!
Hat wirklich keiner eine Idee, was ich falsch gemacht habe Ich hänge total an dieser Stelle und wäre für Hilfe seeeeeehr dankbar
Peter
-
20.11.04 11:58 #5
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Veruschs mal so:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
package de.tutorials; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextPane; public class Unicode2UTF_8 extends JFrame { private JTextPane pane; private JButton btnConvert; public Unicode2UTF_8() { super("Unicode2UTF_8"); setDefaultCloseOperation(EXIT_ON_CLOSE); pane = new JTextPane(); btnConvert = new JButton("Convert"); btnConvert.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String str = pane.getText(); try { byte[] bytes = str.getBytes("UTF-8"); ByteArrayOutputStream baos = new ByteArrayOutputStream(); baos.write(bytes); String s = new String(baos.toByteArray(), "UTF-8"); System.out.println(s); } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } } }); getContentPane().add(new JScrollPane(pane), BorderLayout.NORTH); getContentPane().add(btnConvert, BorderLayout.SOUTH); pack(); setVisible(true); } public static void main(String[] args) { new Unicode2UTF_8(); } }
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
20.11.04 18:38 #6
- Registriert seit
- Aug 2004
- Beiträge
- 73
Hallo Tom!
Vielen Dank für deine Hilfe erstmal! Funktioniert hat es nur leider auch nicht, wobei ich gerade rausgefunden habe, dass offenbar innerhalb der TextPane gar nicht unicode verwendet wird, sondern Cp1252.
Dafür habe ich folgenden Code benutzt:
Nun habe ich drei - vielleicht dumme - Fragen:Code :1 2 3 4
ByteArrayOutputStream baos = new ByteArrayOutputStream(); OutputStreamWriter out = new OutputStreamWriter(baos); out.write(input_string); String encoding = out.getEncoding();
1) Wie ist es möglich, dass nicht unicode verwendet wurde, obwohl in der Sun-Doku über Documents (die ja in JTextPanes verwendet werden) steht:
"To support internationalization, the Swing text model uses unicode characters..." ?
2) Kann ich irgendwie den Schriftsatz im JTextPane festlegen?
3) Warum werden immer noch Sonderzeichen durch '?' ersetzt, wenn ich deinen Code (mit Cp1252) benutze?
Code :1 2 3 4 5
byte[] bytes = str.getBytes("Cp1252"); ByteArrayOutputStream baos = new ByteArrayOutputStream(); baos.write(bytes); String s = new String(baos.toByteArray(), "UTF-8"); System.out.println(s);
Vielen Dank für jede Hilfe!
Peter
Ähnliche Themen
-
c#-unicode
Von adilosch im Forum .NET ArchivAntworten: 4Letzter Beitrag: 10.01.08, 10:50 -
Unicode
Von liquidbeats im Forum PHPAntworten: 4Letzter Beitrag: 30.04.07, 00:52 -
Unicode?
Von Caruso_Nix im Forum JavaAntworten: 5Letzter Beitrag: 11.03.05, 09:25 -
Unicode oder Unicode nicht
Von Trivalik im Forum .NET ArchivAntworten: 1Letzter Beitrag: 09.12.04, 15:02 -
Konvertierung von String in Double u. Allgmeine Konvertierung
Von Sephiroth the Second im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 10.04.04, 01:34





Zitieren

Login





