sql >> Databáze >  >> RDS >> Oracle

Jak kódovat znaky z Oracle do XML?

Našel jsem zajímavý seznam v Specifikace XML :Podle tohoto seznamu se nedoporučuje používat znak #26 (Hex:#x1A ).

Podívejte se na kompletní rozsahy .

Tento kód nahrazuje všechny neplatné Xml Utf8 z řetězce:

public String stripNonValidXMLCharacters(String in) {
    StringBuffer out = new StringBuffer(); // Used to hold the output.
    char current; // Used to reference the current character.

    if (in == null || ("".equals(in))) return ""; // vacancy test.
    for (int i = 0; i < in.length(); i++) {
        current = in.charAt(i);
        if ((current == 0x9) ||
            (current == 0xA) ||
            (current == 0xD) ||
            ((current >= 0x20) && (current <= 0xD7FF)) ||
            ((current >= 0xE000) && (current <= 0xFFFD)) ||
            ((current >= 0x10000) && (current <= 0x10FFFF)))
            out.append(current);
    }
    return out.toString();
}    

je převzato z Neplatné znaky XML:jsou-li platné UTF8 neznamená platné XML

Ale s tím jsem měl stále problém s kompatibilitou UTF-8:

org.xml.sax.SAXParseException: Invalid byte 1 of 1-byte UTF-8 sequence

Po přečtení XML – vrací XML jako UTF-8 ze servletu Právě jsem vyzkoušel, co se stane, když nastavím Contenttype takto:

response.setContentType("text/xml;charset=utf-8");

A fungovalo to ....



  1. Úvod do kolekcí PL/SQL v databázi Oracle

  2. Jak to napsat (levý spoj, poddotaz) v Laravelu 5.1?

  3. Escapující řetězce obsahující jednoduché uvozovky v PowerShellu připravené pro SQL dotaz

  4. Funkce vs uložené procedury