Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak kodować znaki z Oracle do XML?

Znalazłem interesującą listę w Xml Spec :Zgodnie z tą listą odradza się używanie znaku #26 (Hex:#x1A ).

Zobacz pełne zakresy .

Ten kod zastępuje wszystkie niepoprawne kody Xml Utf8 z ciągu:

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();
}    

pochodzi z Nieprawidłowe znaki XML:jeśli są prawidłowe UTF8 nie oznacza prawidłowego XML

Ale z tym miałem nadal problem z kompatybilnością UTF-8:

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

Po przeczytaniu XML - zwracanie XML jako UTF-8 z serwletu Właśnie wypróbowałem, co się stanie, jeśli ustawię Contenttype w następujący sposób:

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

I zadziałało ....



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Optymalizator Oracle 10 od REGUŁY do KOSZTÓW:dlaczego?

  2. Jak ładnie sformatować drukowanie zapytań SQL w SQLAlchemy?

  3. Wyselekcjonowanie pracowników z urodzinami w danym zakresie za pomocą Oracle SQL

  4. Oracle utwórz tabelę jako wybierz z warunkiem liczenia max

  5. Agregat Oracle do łączenia ciągów znaków przecinkiem i pisania niestandardowych agregatów