Unconvertible UTF-8 character

Status
Nicht offen für weitere Antworten.

byte

Top Contributor
Hi,

folgendes Problem: Ich versuche eine besondere HTML-Datei mit JDOM einzulesen, aber der Parser (sowohl JAXP als auch Xerces getestet) wirft ne Fehlermeldung:

Code:
Unconvertible UTF-8 character beginning with 0x96

Die HTML-Dateien sehen in etwa wie folgt aus:

Code:
<?xml version="1.0"?><html xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation='document.xsd'><head><title></title><style type="text/css">
td    { vertical-align:top; }
</style></head><body><table ...>...</table></body></html>

Ich habe keinen Einfluss auf diese Dateien, muss aber bestimmte Sachen ändern (Image Tags im Body entfernen bzw. ändern). Gibt es eine Lösung für das Problem, so dass ich die Dateien eingelesen bekomme mit JDOM? Ansonsten müsste ich die Änderungen manuell machen, indem ich das Ganze mit nem Reader einlese, doch das wäre ziemlich umständlich, weil diese HTML-Dateien keine vernünftige Formatierung haben (Linebreaks fehlen).

Danke im Voraus...
 

byte

Top Contributor
Wie findet man das Encoding denn raus? Wenn ich die Datei mit Firefox öffne, steht die Codierung automatisch auf Windows-1252. Ich muss dann wohl dem Builder noch mitteilen, welche Codierung verwendet wird!?

Einlesen tue ich folgendermaßen:

Code:
SAXBuilder builder =
  new SAXBuilder("org.apache.xerces.parsers.SAXParser", false);
 Document doc = builder.build(xml);
 

Bleiglanz

Gesperrter Benutzer
verwende

public Document build(java.io.Reader characterStream)
throws JDOMException,
java.io.IOException

This builds a document from the supplied Reader. It's the programmer's responsibility to make sure the reader matches the encoding of the file. It's often easier and safer to use an InputStream rather than a Reader, and to let the parser auto-detect the encoding from the XML declaration.
funktioniert ja bei dir offensichtlich nicht

Frage: was ist das "xml" bei dir im Argument von build??
 

byte

Top Contributor
"xml" ist die HTML-Datei als File. Das hat auch sonst bei anderen Projekten immer prima funktioniert.
 

Bleiglanz

Gesperrter Benutzer
diesmal eben nicht

musst dir schon einen Reader machen, dem du das richtige Encoding manuell mitteilst...
 

byte

Top Contributor
Danke, das werde ich mal probieren. Habe immer geguckt, ob man dem SAXBuilder die Kodierung mitteilen kann, aber nix entsprechendes gefunden.

Edit: OK, hat geklappt. Leider hat sich rausgestellt, dass die Dateien nicht Well-Formed sind. Also kann ich den JDOM-Ansatz vergessen. ;)
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben