Ich habe einen Cursor, der Text aus einer Tabelle abruft. Ich habe dann eine FOR .. LOOP dass Iterierten auf diesem Cursor und ein XMLTYPE erzeugt, wie folgt aus:Behalten UTF8-Codierung beim Generieren eines neuen XMLTYPE in Oracle
TRANSLATION := XMLTYPE('<I18NElement>
<i18nElementType>'||ELEMENTTYPE||'</i18nElementType>
<key>'||REC.CODE||'</key>
<languageCode>'||REC.CODIDI||'</languageCode>
<i18nField>
<fieldName>commercialName</fieldName>
</i18nField>
<i18nField>
<fieldName>description</fieldName>
<translation><![CDATA['||REC.DESCRIPTION||']]></translation>
</i18nField>
<isDefault>'||BOOLEANDEFAULT||'</isDefault>
</I18NElement>');
Die UTF-8 kodierten Text im REC.DESCRIPTION Feld ist. Wenn ich diesen Text direkt in eine andere Tabelle einfüge, wird die Codierung korrekt beibehalten. Allerdings, wenn ich die XMLTYPE in einer anderen Tabelle einfügen, wird die Codierung verloren:
<I18NElement>
<i18nElementType>Hotel</i18nElementType>
<key>[email protected]@[email protected]#1036</key>
<languageCode>ES</languageCode>
<i18nField>
<fieldName>commercialName</fieldName>
</i18nField>
<i18nField>
<fieldName>description</fieldName>
<translation><![CDATA[Hotel de playa de 3 estrellas, de gestión familiar desde 1964. Larga experiéncia el en trato familiar con el cliente. Situado en Malgrat de Mar, Costa Barcelona-Maresme, a 80 Km del aeropuerto de Barcelona y a 40 Km del de Girona.
Este hotel, está compuesto por un edificio principal de cuatro plantas y otro anexo de dos, contiene un total de 227 habitaciones. Está situado a solamente 50 metros de la playa y del paseo marÃtimo y el centro del pueblo está a una distancia de 400 metros.]]></translation>
</i18nField>
<isDefault>true</isDefault>
</I18NElement>
Hier ist der Originaltext:
Hotel de playa de 3 estrellas, de gestión familiar desde 1964. Larga experiéncia el en trato familiar con el cliente. Situado en Malgrat de Mar, Costa Barcelona-Maresme, a 80 Km del aeropuerto de Barcelona y a 40 Km del de Girona.
Este hotel, está compuesto por un edificio principal de cuatro plantas y otro anexo de dos, contiene un total de 227 habitaciones. Está situado a solamente 50 metros de la playa y del paseo marítimo y el centro del pueblo está a una distancia de 400 metros.
ich alle Arten von Kombinationen mit UTL_I18N
Dienstprogramme versucht haben, nichts ist so weit zu arbeiten. Die Datenbank NLS_CHARACTERSET
ist auf AL32UTF8
eingestellt.
Alle Informationen, die Sie mir zur Verfügung stellen können, würden sehr geschätzt werden! Ich habe eine Menge verwandter Fragen in Stackoverflow gefunden, aber bisher hat keiner für mich funktioniert ...
Welcher Datentyp ist die Spalte, in die Sie einfügen - XMLType, CLOB, NCLOB? Wenn NCLOB (oder NVARCHAR2, weniger wahrscheinlich), was ist Ihr nationaler Zeichensatz? Wie werden Sie den ursprünglichen Wert und den gespeicherten Wert nach dem Einfügen abfragen und anzeigen? –
Es ist eine XMLTYPE-Spalte. Ich frage mich, ob es ein Toad-Problem ist (ich führe das Skript von dort aus). Ich werde es mit SQL Developer versuchen. – LeoLozes