Java UniCode

im worst case muss ich bis zu 65000 Zeilen schreiben
Unicode hat über hunderttausend Zeichen :) ... der worst-case wäre doch wohl hoffentlich, nicht eine Codezeile pro Zeichen händisch zu schreiben, sondern das Ganze automatisch zu machen (es müssen ja auch nicht Namen sein, solche &irgendwas; - Bezeichnungen gehen auch mit Nummern)

Aber, wie jetzt auch Saftmeister sagt. der Bestcase wäre, gar nichts umzuwandeln.
Die Browser kennen UTF8.

Man muss nur sicherstellen, dass nichts (DB, Server, Metatag etc.)
dem Browser mitteilt/erlaubt, was Anderes als UTF8 zu nehmen.
 
Guten Tag


Mit Hilfe der javaklasse



Code:
import java.util.*;

import java.io.*;


public class Test1 {


static String[] feld = { "a", "ä", "ü", "\u00E4", "\u00FC", "ö", "Ä", "Ü" };


public static void main(String[] args) {


try {


OutputStream zielDatei = new FileOutputStream("test1.sql");

Writer ausgabeDatei = new OutputStreamWriter(zielDatei, "UTF-8");

PrintWriter anhaengen = new PrintWriter(ausgabeDatei);


for (int i = 0; i < feld.length; i++) {

try {

anhaengen.printf(Locale.ENGLISH, "%s\n", new String(feld[i].getBytes("UTF-8"), "ISO-8859-1"));

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}


}


ausgabeDatei.close();

} catch (Exception e) {

System.err.println(e.getMessage());

}

}

}



habe ich ein paar Zeichen in UTF-8 umwandeln können.

Nun wollte ich die gleiche Eingabe in einer Textdatei geschrieben und wolle den Inhalt des Textes in UTF-8 konvertieren und zwar mit Hilfe der Klasse


Code:
import java.io.*;


public class Test2 {

public static void main(String[] args) {


try {

BufferedReader eingabeDatei = new BufferedReader(new FileReader("test2.txt"));


BufferedWriter ausgabeDatei = new BufferedWriter(

new OutputStreamWriter(new FileOutputStream("test2.sql"), "UTF8"));


String zeile;


while ((zeile = eingabeDatei.readLine()) != null) {

ausgabeDatei.write(zeile);

ausgabeDatei.write('\n');

}


eingabeDatei.close();

ausgabeDatei.close();

} catch (Exception e) {

System.err.println(e.getMessage());

}

}

}


Leider wurde nicht die Zeichen \u00E4 in UTF-8 konvertiert. Was mache ich falsch?


Lg Moni
 
...die Klassen schauen auf den ersten Blick sehr falsch aus.

Ansonsten kann ich nicht wirklich helfen, wenn die Fragen oben nicht beantwortet werden.
 
...geht es überhaupt darum, eine Website zu generieren, oder
einfach nur darum, eine Textdatei auf die Festplatte zu schreiben?
 
die eigentliche Aufgabe ist: man will die Musiker als HTML, Als SQL in UTF-8 und als normalen Text ausgeben.
Also zunächst mal nur Texte erstellen. Ob später darus eine Website o.ä. ist das erstmal zweitrangig.
 
Hi,

wenn du durchgehend (!) UTF-8 verwendest (Datenbank Collation, Verbindung Charset, HTML Metatype und Header Content-Type bei HTML) dann brauchst du die Zeichen nicht in irgendwelche komischen Escape-Sequeuenzen zu &auml;ndern. Das Ist unnötig und sorgt immer wieder für Probleme und Kopfzerbrechen.

Problem, welches ich schon mehr als oft erlebt habe:
Datebank läuft im normalen ISO-8859 Charset. Daten von der Webseite werden "komisch" in der Datenbank gespeichert, also werden vorher die Sonderzeichen per HTML-Escaped. Später braucht man die Daten aber für eine andere Seite als XML / JSON / sonstwas. Da die Daten nun bereits in einer speziellen, nicht universalen, Form gespeichert sind muss der andere Dienst die Daten abrufen, das HTML-Escaping rückgängig und sein eigenes Escaping anwenden. Ein einfaches Update per phpmyadmin wird so ein Graus, vorallem wenn du damit dann suchen / einfügen / ersetzen willst.

Zieh ein Encoding einfach sauber von A-Z durch, dann werden die Zeichen auch korrekt angezeigt. Das heisst auch, dass du die Java-Klassen in UTF-8 kodieren solltest (Eclipse verwendet unverständlicherweise unter Windows den CP-irgendwas Charset). Wenn dein Editor (Textpad kenn ich nicht) dir keine Optionen zum Charset anbietet, dann brauchst du einen anderen Editor (ich empfehle hier gerne Notepad++), dieser kann so ziemlich alles an Encoding (auch Konvertierungen) was man als Entwickler so braucht.

Grüsse,
BK
 
Zurück