Hallo zusammen,
ich habe mir eine simple Anwendung geschrieben, mit der ich grundsätzlich in beliebigen, speziell jedoch in html-Dateien, welche in einem Ordner einschließlich Unterordner liegen, beliebige Textteile ersetzen kann. Bisher habe ich diese Anwendung vor allem dafür verwendet, Pfadbezeichnungen zu verändern. Jetzt wollte ich sie auch dafür verwenden, nicht konvertierte deutsche Umlaute in das UTF-8 Format umzuwandeln. Für den Test habe ich mir eine kurze HTML-Datei geschrieben, in der alle deutschen Sonderzeichen vertreten sind.
Hier ist dann der Teil, in welchem die Ersetzungen über die replace()-Methode vorgenommen werden soll. Nur zum Verständnis: In liste[] sind alle gefundenen HTML-Dateien, die nach der Ersetzung wieder abgespeichert werden.
Nun passiert bei mir etwas sehr eigenartiges: In den eingelesenen Zeilen sind die Sonderzeichen als Literale dargestellt und zwar für jedes Sonderzeichen der selbe Code, nämlich '\ufffd'. Dieser entspricht keinem mir bekannten UTF-8 Code und wird von replace() durch das kleine 'ö' ersetzt.
Kann mir jemand erklären, woran das liegt, welchen Fehler ich hier mache.
Im voraus schon einmal einen schönen Dank für jeden Hinweis.
Mit freundlichem Gruß,
Konrad
ich habe mir eine simple Anwendung geschrieben, mit der ich grundsätzlich in beliebigen, speziell jedoch in html-Dateien, welche in einem Ordner einschließlich Unterordner liegen, beliebige Textteile ersetzen kann. Bisher habe ich diese Anwendung vor allem dafür verwendet, Pfadbezeichnungen zu verändern. Jetzt wollte ich sie auch dafür verwenden, nicht konvertierte deutsche Umlaute in das UTF-8 Format umzuwandeln. Für den Test habe ich mir eine kurze HTML-Datei geschrieben, in der alle deutschen Sonderzeichen vertreten sind.
Hier ist dann der Teil, in welchem die Ersetzungen über die replace()-Methode vorgenommen werden soll. Nur zum Verständnis: In liste[] sind alle gefundenen HTML-Dateien, die nach der Ersetzung wieder abgespeichert werden.
Java:
BufferedReader reader;
try {
reader = new BufferedReader(new FileReader(liste[i]));
ArrayList<String> values = new ArrayList<String>();
String zeile = reader.readLine(); // erste Zeile einlesen
while (zeile != null) { // solange erfolgreich
zeile = zeile.replace(suchText, ersatzText); // korrigieren
values.add((zeile + "\n").toString()); // Zeile in Liste
zeile = reader.readLine(); // nächste Zeile einlesen
}
reader.close();
Nun passiert bei mir etwas sehr eigenartiges: In den eingelesenen Zeilen sind die Sonderzeichen als Literale dargestellt und zwar für jedes Sonderzeichen der selbe Code, nämlich '\ufffd'. Dieser entspricht keinem mir bekannten UTF-8 Code und wird von replace() durch das kleine 'ö' ersetzt.
Kann mir jemand erklären, woran das liegt, welchen Fehler ich hier mache.
Im voraus schon einmal einen schönen Dank für jeden Hinweis.
Mit freundlichem Gruß,
Konrad
Zuletzt bearbeitet: