So ändern Zeichensatz der XMLTYPE-variable?
Ich bin derzeit mit nicht-utf-8-DB, aber ich brauche, um zu produzieren XMLType-variable mit der Codierung utf-8. Ich habe ein workaround, aber es scheint zu sein, Fehler in der Oracle finden Sie unter dem folgenden link:
https://forums.oracle.com/forums/thread.jspa?messageID=10238641
...und Support von Oracle Fehler: 7698684
Den Fehler verursacht zufällige
ORA-1482: unsupported character set
ORA-6512: at "SYS.XMLTYPE", line 107
Zuallererst bin ich immer XMLType mit dbms_xmlgen-package. Dass XMLType ist, kodiert mit DB-Zeichen gesetzt werden.
Konvertieren zu utf-8 Zeichensatz habe ich dies so tun:
- Ich konvertieren XMLType-variable BLOB-variable mit getBlobVal Methode mit NLS_CHARSET_ID
('UTF8') als parameter - Ich konvertiert BLOB-variable zurück zu XMLType mit XMLType-Konstruktor-Methode mithilfe von BLOB-variable als ersten parameter, und NLS_CHARSET_ID
('UTF8') als zweiten parameter. Dies bewirkt, dass zufällige Fehler 🙁
Weiß jemand eine alternative Lösung für dieses Problem?
l_xml := dbms_xmlgen.getXMLType(l_ctx);
l_xml_b := l_xml.getBlobVal(C_UTF8_CHARSET_ID);
l_xml := XMLType(l_xml_b, C_UTF8_CHARSET_ID);
Wo haben Sie festgestellt, dass die definition für
Zumindest ist es hier geschrieben: docs.oracle.com/cd/B19306_01/appdev.102/b14259/xdb04cre.htm
Es scheint undokumentierte (vermutlich Dokumentation bug) aber du hast Recht, es funktioniert. Welche version Sie ausführen?
By the way, ich werde nicht schreiben Sie eine Antwort Recht jetzt, da ich nicht die Zeit haben, finden Sie Referenzen, aber ich bin mir ziemlich sicher, dass eine XMLType ist Abstrakt und nicht mit einem Zeichensatz (wie ein DATE nicht ein format haben). Der Zeichensatz wird gewählt, wenn Sie verwandeln den XMLType in lesbare/ - format exportierbar.
11g R2 (mich nicht erinnern, ausführliche version, kann aber morgen zu überprüfen). XMLType hält eigenen Zeichensatz Informationen. Ich bin Recht absolut sicher, denn ich bin zurück von XMLType variable throught 11g native web-services und wenn ich meine utf-8 Kodieren Sachen, dann wird es wirklich macht web-service mit utf-8! Ansonsten ist es nur die Renditen von xml über web-service-codiert mit dem DB-Zeichen gesetzt werden.
XMLType.getBlobVal()
? in der Dokumentation wird nicht aufgeführt, da mit einem parameterZumindest ist es hier geschrieben: docs.oracle.com/cd/B19306_01/appdev.102/b14259/xdb04cre.htm
Es scheint undokumentierte (vermutlich Dokumentation bug) aber du hast Recht, es funktioniert. Welche version Sie ausführen?
By the way, ich werde nicht schreiben Sie eine Antwort Recht jetzt, da ich nicht die Zeit haben, finden Sie Referenzen, aber ich bin mir ziemlich sicher, dass eine XMLType ist Abstrakt und nicht mit einem Zeichensatz (wie ein DATE nicht ein format haben). Der Zeichensatz wird gewählt, wenn Sie verwandeln den XMLType in lesbare/ - format exportierbar.
11g R2 (mich nicht erinnern, ausführliche version, kann aber morgen zu überprüfen). XMLType hält eigenen Zeichensatz Informationen. Ich bin Recht absolut sicher, denn ich bin zurück von XMLType variable throught 11g native web-services und wenn ich meine utf-8 Kodieren Sachen, dann wird es wirklich macht web-service mit utf-8! Ansonsten ist es nur die Renditen von xml über web-service-codiert mit dem DB-Zeichen gesetzt werden.
InformationsquelleAutor Jokke Heikkilä | 2012-03-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es geschafft, dies zu tun mit der convert-Funktion. Es war nicht möglich, konvertieren Sie das gesamte xml-Dokument (auch die clob-Wert), sondern nur die element-Werte.
War dies nicht funktioniert (XMLType-Konstruktor fehlschlägt):
So hatte ich, um zu konvertieren, um den query-string (das ist nur ein Beispiel):
Endlich habe ich eine Funktion die liest Wörterbuch und eine Schleife über alle Spalten der gegebenen Tabelle/view und erzeugt select-Anweisung string, in dem alle Spalten sind einzeln konvertieren zu UTF8. Dieser string kann dann als parameter übergeben, um die dbms_xmlgen.newContext-Funktion.
InformationsquelleAutor Jokke Heikkilä