unicode-zeichen in ein txt-File schreiben

Status
Nicht offen für weitere Antworten.

lfshaker

Mitglied
Hallo zusammen

ich hab ein folgendes Problem. Ich möchte chemische Formeln in ein txt-File schreiben.
hier der code:

Code:
import java.io.*;
import java.util.*;
import java.text.*;

public class ProtocolWriter {

	private String fileName;
	private final String space = "	-	";
	private File file;
	private BufferedWriter writer;
	
	
	public ProtocolWriter(){
			
		fileName = "D:/protocol.txt";
		
		file = new File(fileName );
		
		try{
			
			writer = new BufferedWriter(new FileWriter(file));
		}
		catch(IOException ex){
		
			
		}
	}
	
	public void writeLineToProtocolFile(String sumFormula){
		
		try{
		
			writer.write(sumFormula + "\r\n");
			writer.flush();
		}
		catch(IOException ex){
		
		}
	}
}

Der Methode "writeLineToProtoclFile" wird z.B. "H2SO4" (die 2 und die 4 sind unicodezeichen und tiefgestellt - wird hier nicht dargestellt)...

Im Textfile finde ich den Eintrag aber folgend: "H?SO?".

Die unicode-Zeichen werden durch "?" ersetzt...
Hat jemand eine Ahnung, woran das liegen kann?

Danke für eure Hilfe.
 
S

SlaterB

Gast
du musst die Datei im passenden Encoding schreiben (und später auch lesen, kann nicht jeder simple Editor)

FileWriter ist schlecht:
public class FileWriter
extends OutputStreamWriter

Convenience class for writing character files. The constructors of this class assume that the default character encoding and the default byte-buffer size are acceptable.

OutputStreamWriter vielleicht:
http://java.sun.com/javase/6/docs/api/java/io/OutputStreamWriter.html

aber bei solchen Geschichten würde ich ein kompetentes Tutorial konsultieren,
(in kann keins nennen und auch nicht mehr helfen als auf die Problematik hinzuweisen ;) )
 
B

Bernd das Brot

Gast
Alternativ nimmst Du einen outputstream, in welchen man Bytes schreiben kann und konvertierst selbst:

Code:
String uff = "²³";
byte[] buffer = uff.getBytes("iso-8859-15");

Da gibt es aber ein echtes Problem: wenn die Plattform die Zeichen nicht darstellen kann (und FileWriter verwendet bereits das Plattformencoding), dann bringt das alles nix.

Also würde ich vielleicht einfach keine lesbare Datei nehmen, sondern alternativ den String z.B. mit dem ObjectOutputStream deserialisieren. Das wäre eine echte Brot und Butter-Lösung - wenn Du nur wegspeichern willst.

Alternative 2 (luxus): XML. Dort kannst Du im Kopf das encoding angeben - also z.B. UTF-8 oder UTF-16.

Ich denke da an sowas der Art:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<formular>
     [HIER DEINE FORMEL ALS TEXT]
</formular>

Dazu mußt Du Dich mal in javax.xml.* einlesen. Aber ausgeben kannst Du das dann z.B. mit

Code:
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
transformer.setOutputProperty(OutputKeys.ENCODING, encoding);
// Einrückung: wer keine Formatierung braucht, kann darauf verzichten
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", indent+"");

// wechschreiben
transformer.transform(new DOMSource(doc), new StreamResult(new BufferedWriter(new OutputStreamWriter(ostream, encoding))));

Angenommen werden ein gültiges XML-Document doc und ein fertiger OutputStream ostream inklusive gewünschtem encoding
 

lfshaker

Mitglied
danke für eure Antworten. habs folgendermassen gelöst:

Code:
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));

mit dem OutputStreamWriter verkettet mit dem FileOutputStream und der "UTF-8"-Kodierung hat es geklappt...


Danke nochmals an SlaterB für den Tipp mit dem FileWriter ;-)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
_user_q JavaFX Robot alle Unicode-Zeichen schreiben lassen können Allgemeine Java-Themen 12
E Compiler-Fehler Unicode Zeichen einlesen Allgemeine Java-Themen 1
L Problem bei ausführbarer jar Datei mit Unicode-Zeichen Allgemeine Java-Themen 4
Luma Unicode Steuerzeichen von druckbaren Zeichen trennen Allgemeine Java-Themen 10
oliver1974 Wie ResourceBundles mit Unicode Zeichen korrekt einlesen? Allgemeine Java-Themen 4
H Unicode Darstellung in Java, spezielles Zeichen gesucht Allgemeine Java-Themen 4
S Unicode-Zeichen erstellen/ Kodierung Allgemeine Java-Themen 4
C Unicode für Promille-Zeichen Allgemeine Java-Themen 5
J Unicode Darstellung mit 5 chars Allgemeine Java-Themen 9
L UTF8 to Unicode Allgemeine Java-Themen 9
mrBrown Unicode-WhiteSpaces aus String entfernen Allgemeine Java-Themen 14
S Input/Output Unicode Umwandlung Allgemeine Java-Themen 2
H Unicode ausgeben ohne Umwandlung - geht das? Allgemeine Java-Themen 3
J Unicode als String Allgemeine Java-Themen 6
R kopieren von Dateien und Verzeichnissen - UNICODE? Allgemeine Java-Themen 4
P JavaDoc und Backslashes: "Invalid unicode" Allgemeine Java-Themen 3
H Exponenten mit UNICODE Allgemeine Java-Themen 4
N Encoding Unicode Textfile Allgemeine Java-Themen 5
M Unicode 06 (Arabic) Allgemeine Java-Themen 5
P Unicode-Sequenz (u1234) in Variable speichern und ausgeben Allgemeine Java-Themen 6
P Unicode-Problem: Griechische Buchstaben Allgemeine Java-Themen 11
J Unicode: cmd parameter (main args); exec params; filenames Allgemeine Java-Themen 2
Daniel_L ASCII in UniCode umwandeln? Allgemeine Java-Themen 14
L unicode Allgemeine Java-Themen 5
F Unicode zu ASCII konvertieren Allgemeine Java-Themen 5
I Eignung eines Zeichensatzes zur Kodierung eines Unicode-Str. Allgemeine Java-Themen 3
D Zeilenweises auslesen aus einer Unicode CSV-Datei Allgemeine Java-Themen 7
U unicode oder was? Allgemeine Java-Themen 14
R Abwärtskompatibilität des Unicode Allgemeine Java-Themen 2
R Unicode (Kyrillisch) Allgemeine Java-Themen 15
byte Unicode Sonderzeichen Allgemeine Java-Themen 2
B Unicode für Kreuz gesucht Allgemeine Java-Themen 2
G Unicode file auslesen Allgemeine Java-Themen 11
U Unicode char kyrillisch Allgemeine Java-Themen 10
G Unicode eines Zeichens ermitteln Allgemeine Java-Themen 5
MarvinsDepression Unbekanntes Zeichen in fremden Code wirft Fragen auf Allgemeine Java-Themen 4
S Zeichen | in regex Allgemeine Java-Themen 8
T Komische Zeichen im Zusammenhang mit Serializable interface Allgemeine Java-Themen 13
M Checkstyle 100 Zeichen pro Zeile Allgemeine Java-Themen 11
T Letztes Zeichen eines Strings enfernen Allgemeine Java-Themen 14
Master3000 Komisches Zeichen als Ausgabe in der Konsole Allgemeine Java-Themen 20
M Warum gibt es Unterschiedliche Kommentar Zeichen Allgemeine Java-Themen 15
N Überprüfung ob ein bestimmtes Zeichen <1 mal vorkommt Allgemeine Java-Themen 2
N Prüfen, ob ein String 2x das selbe Zeichen hat Allgemeine Java-Themen 10
G Übermittlung zusätzlicher ASCII-Zeichen bei Übertragung von Dateiinhalt mit Xmodem - JAVA Allgemeine Java-Themen 9
R Wie bekomme ich das Zeichen 'digit' an vorderster Stelle Allgemeine Java-Themen 4
S [Regex] Nur diese Zeichen beachten Allgemeine Java-Themen 1
Bluedaishi Zeile um zeichen erweitern Allgemeine Java-Themen 9
N Datei Zeilenweise Einlesen, Versteckte Zeichen Allgemeine Java-Themen 5
Xge Replace x Zeichen aus String Allgemeine Java-Themen 2
S Java Editor Bekomme bei der Code-Vervollständigung die Zeichen &#8203; Allgemeine Java-Themen 3
U Variablen Stringarrays mit wenig verschiedenen Zeichen effizienter speichern Allgemeine Java-Themen 10
T xls-Datei per Apache Commons CsvParser einlesen UTF-8 Zeichen russische Zeichen Allgemeine Java-Themen 2
AssELAss String jeweils nach x Zeichen Zeilenumbruch Allgemeine Java-Themen 1
DStrohma Input/Output KeyEvent nur verarbeiten wenn es ein "sichtbares" Zeichen ist? Allgemeine Java-Themen 1
B In Java String ein + Zeichen Allgemeine Java-Themen 4
AssELAss Zeilenumbruch immer nach bestimmtem Zeichen Allgemeine Java-Themen 1
J Anzahl der Zeichen bei Eingabe begrenzen Allgemeine Java-Themen 5
V Tastendruck für UTF-8 Zeichen emulieren Allgemeine Java-Themen 4
B BufferedWriter in InputStream oder Zeichen-Stream in Byte-Stream Allgemeine Java-Themen 5
C Hex Zeichen ersetzen durch leer Zeichen Allgemeine Java-Themen 5
R Besondere Zeichen in Dateinamen Allgemeine Java-Themen 4
B Alt-Griechisch Zeichen in Dateien Allgemeine Java-Themen 2
G AES Verschlüsselung nur bis 63 Zeichen Länge Allgemeine Java-Themen 2
M Fehlende Zeichen beim Drucken mit PDFBox Allgemeine Java-Themen 10
J String nur erste Zeichen vergleichen Allgemeine Java-Themen 6
C Variablen $-Zeichen in String ersetzen Allgemeine Java-Themen 3
S String Zeichen für Zeichen vergleichen Allgemeine Java-Themen 4
S String in Double - letztes Zeichen fehlt Allgemeine Java-Themen 4
A Erstes Zeichen im String "toUpperCase"n Allgemeine Java-Themen 11
A Umwandlung von Text/Zeichen in Polynome Allgemeine Java-Themen 8
cedi int Zahl in ein ASCII zeichen umwandeln und dieses in ein externes Textfenster schreiben Allgemeine Java-Themen 6
K String: alle X Zeichen Zeilenumbruch Allgemeine Java-Themen 3
M Nach Programmdurchlauf werden Zeichen falsch dargestellt + Anderes Verhalten unter Windows Allgemeine Java-Themen 6
Zettelkasten Aus String bestimmtes Zeichen herausfinden Allgemeine Java-Themen 19
M Asterisk in String ("Egal-Zeichen") Allgemeine Java-Themen 4
V Chinesische Zeichen Escapen Allgemeine Java-Themen 4
I Teilweise falsche Darstellung jap. Zeichen im JEditorPane mit RTFEditorKit aus RTF-Datei Allgemeine Java-Themen 5
D Datei mit allen Ascii Zeichen Allgemeine Java-Themen 2
R Unsichtbare Zeichen Allgemeine Java-Themen 7
U Namen von Klassen haben $-Zeichen Allgemeine Java-Themen 5
P RegEx und $-Zeichen als Literal Allgemeine Java-Themen 5
neonfly Anzahl Zeichen pro Zeile auf der Konsole Allgemeine Java-Themen 8
C Strings zwischen 2 Zeichen auslesen Allgemeine Java-Themen 7
A Zeichen beim Eingeben in ein DOS-Fenster nicht anzeigen? Allgemeine Java-Themen 3
F Hexcode von ASCII Zeichen erhalten Allgemeine Java-Themen 2
J Mit Scanner-Klasse eine Datei zeilenweise einlesen und nur bestimmte Zeichen abfragen Allgemeine Java-Themen 11
V Dateien mit &-Zeichen im Namen öffnen Allgemeine Java-Themen 13
N String in einzelne Zeichen zerlegen Allgemeine Java-Themen 8
M Problem mit Zeichen aus einer Datei auslesen Allgemeine Java-Themen 2
T Shapes vergleichen? Zeichen erkennen? Allgemeine Java-Themen 7
G String.replaceall - mehrere Zeichen durch eines ersetzen Allgemeine Java-Themen 5
G Tschechische Zeichen in XML-Antwort Allgemeine Java-Themen 22
J Encoding und Gewinnung von Zeichen aus der Hexa-Darstellung Allgemeine Java-Themen 6
N Xor Warum kommt Flasches Zeichen in Java Allgemeine Java-Themen 36
S Stringarray splitten an unbekanntem Zeichen Allgemeine Java-Themen 7
A Dezimalzahlen: Komma-Zeichen Allgemeine Java-Themen 4
T Einzelnes Zeichen von der Tastatur einlesen, aber ohne Enter Allgemeine Java-Themen 4
S Was bedeutet dieser Zeichen Allgemeine Java-Themen 4
E Wie Zeichen eingeben mit Klasse Scanner? Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben