Avatar billede qumle Nybegynder
29. august 2005 - 10:41 Der er 3 kommentarer og
1 løsning

xml parsing af special tegn med DefaultHandler

Jeg har en klasse som skal parse noget xml. Til dette formål benytter arver jeg fra klassen org.xml.sax.helpers.DefaultHandler.

jeg har en metode parseContent() som starter parsingen af xml documentet, jeg har udelat exception handling for overskuelighedens skyld

protected void parseContent(){   
        SAXParserFactory spf = SAXParserFactory.newInstance();
                spf.setValidating(false);
                SAXParser saxParser = null;
                XMLReader xmlReader = null;

                    saxParser = spf.newSAXParser();
               
                Reader reader = null;
                if (getResource() != null) {
                                            reader = new InputStreamReader(getResource().getUnfilteredContent().getInputStream(), Charset.forName("ISO-8859-1"));

                                    xmlReader.setContentHandler(this);
                    xmlReader.parse(new InputSource(reader));
                   
                    }

kaldet "xmlReader.parse(new InputSource(reader));" starter en parsing af documentet som fyrer events på bestemte tidspunkter i parsingen

f.eks.

public void characters(char ch[], int start, int length) throws SAXException {
        if (current != null) {
            current.append(ch, start, length);
        }
    }
//current er en StringBuffer

public void endElement(String uri, String name, String qName) throws SAXException {
        if (name.equals("TITLE")) {
            title = current.toString();

        }
}

alt det fungerer som det skal, problemet opstår når der er special tegn (f.eks æøå) i xml filen, så bliver det til krims krams.

Jeg har forsøgt at give et Charset(ISO-8859-1) til inputStreamen men det gør ikke rigtig nogen forskel

Er der nogen der har erfaringer med lignende problemer ved brug af defaultHandler?
Avatar billede arne_v Ekspert
29. august 2005 - 10:59 #1
matcher encoding i XML header med den faktiske encoding af ÆØÅ ?

(UTF-8 versus ISO-8859-1)
Avatar billede qumle Nybegynder
29. august 2005 - 11:11 #2
hmm hvis jeg bruger Charset.forName("UTF-8") i stedet så virker det.
Jeg kører mit program på en SAP portal så det må have noget at gøre med hvilke tegnsæt den understøtter.

næste ting er så at vores application skal understøtte "alle" sprog som f.eks kinesisk arabisk osv.

hvor kan man finde en liste over hvilke tegn der er med i hvilke tegnsæt
Avatar billede arne_v Ekspert
29. august 2005 - 12:04 #3
UTF-8 er en encoding af unicode og bør derfor understøtte alle sprog
Avatar billede arne_v Ekspert
29. september 2005 - 20:42 #4
OK ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester