Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara menyandikan karakter dari Oracle ke XML?

Saya menemukan daftar yang menarik di Spesifikasi Xml :Menurut Daftar itu, tidak disarankan untuk menggunakan Karakter #26 (Hex:#x1A ).

Lihat rentang lengkap .

Kode ini menggantikan semua Xml Utf8 yang tidak valid dari sebuah String:

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

diambil dari Karakter XML Tidak Valid:saat valid UTF8 tidak berarti XML yang valid

Tetapi dengan itu saya masih memiliki masalah kompatibilitas UTF-8:

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

Setelah membaca XML - mengembalikan XML sebagai UTF-8 dari servlet Saya baru saja mencoba apa yang terjadi jika saya mengatur Contenttype seperti ini:

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

Dan berhasil....



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah NHibernate TransactionScope dengan Oracle 11g

  2. Oracle:bagaimana cara mendapatkan persen dari total dengan kueri?

  3. ORA-28040:Tidak ada protokol otentikasi yang cocok

  4. Mengonversi CLOB ke NUMBER untuk dibandingkan - Oracle

  5. Bagaimana cara menyembuhkan penyebab pengecualian Hibernate IllegalArgumentException terjadi saat memanggil setter?