# HTML-Entities



## mbucher (13. Apr 2009)

Ich sollte aus einer Datei daten auslesen, die auch Umlaute enthalten. Diese Daten werden in eine XML-Datei geschrieben und nachträglich mit XSLT in eine HTML-Datei geschrieben. Was ich habe sind die Hexa-Werte. So bekomme ich für das Zeichen "ü" den Wert *00FC*. In der HTML-Datei sollte *&#xOOFC* schlussendlich erscheinen, um korrekt dargestellt zu werden. Wenn ich beim Schreiben von XML das Zeichen *&* angebe, schreibt er mir *&amp;* und genau das sehe ich danach in der HTML-Datei. Und, die Darstellung von Umlauten scheitert. 

Nun, wie macht man das?

Danke


----------



## SlaterB (14. Apr 2009)

wenn XSLT dafür verantwortlich ist, dann entweder
1.
XSLT umkonfigurieren, dass es das nicht mehr tut (andere XSL-Datei oder so, genauer kann ich es nicht sagen  )
2.
XSLT nicht verwenden, selber transformieren
3.
Datei nachträglich bearbeiten


----------



## mbucher (14. Apr 2009)

Ich habe micht für die nachträgliche Bearbeitung der Datei entschieden (wohl oder übel). Nun, jetzt kommt folgendes Problem:

Die Datei wurde in UTF-16 geschrieben. Ich möchte jede '&amp;'-Sequenz durch '&' ersetzen. Leider finde ich niergendwo eine solche Sequenz! Im Debug-Modus habe ich gesehen, dass nach jedem Zeichen noch ein zweites (nicht darstellbares) Zeichen kommt (vermutlich das zweite Byte!). So funktioniert meine replaceAll irgendwie nicht. 


```
public static void replaceHtmlEntities(String fileName) throws IOException
{
    String oldPattern = "&amp;";
    String replPattern = "&";

    String line = null;
    StringBuffer sBuffer = new StringBuffer();

    FileInputStream fis = new FileInputStream(fileName);
    BufferedReader bReader = new BufferedReader(new InputStreamReader(fis));

    while ((line = bReader.readLine()) != null)
    {
        line = line.replaceAll(oldPattern, replPattern);
        sBuffer.append(line + "\n");
    }

    bReader.close();

    BufferedWriter bWriter = new BufferedWriter(new FileWriter(fileName + ".html"));
    bWriter.write(sBuffer.toString());
    bWriter.close();
}
```
Sehe nicht ganz durch!


----------



## SlaterB (14. Apr 2009)

vielleicht beim InputStreamReader das richtige Encoding angeben
InputStreamReader UTF-16 - Google Search


----------



## mbucher (14. Apr 2009)

Das hat jetzt funktioniert. Vielen Dank.


----------

