Ich habe Probleme mit der Zeichencodierung beim Anzeigen von dynamischem Inhalt aus einer Broker-Datenbank.Probleme bei der Zeichencodierung beim Abrufen dynamischer Komponenten aus einem Broker DB - Tridion, Oracle, JSP
Ich habe ein Skriptlet, das die Broker-DB aufruft, um eine XML-Zeichenfolge zu generieren, und wird dann von einer XSL analysiert.
Ich habe meinen Code gestrippt zurück, wenn dieses Problem das Debuggen und das Skript sieht nun wie:
.....
strOutput= "<xml>";
ComponentPresentationFactory cpf = new ComponentPresentationFactory(PublicationID);
for (int i =0; i < itemURIs.length; i++)
{
ComponentPresentation cp = cpf.getComponentPresentation(itemURIs[i], strComponentTemplateURI);
if(cp != null){
String content = "";
content = cp.getContent();
strOutput += content;
}
}
strOutput+= "</xml>";
......
Wenn ich diesen Code overide manualy und die XML-String Inhalt manualy im Code festgelegt die Daten korrekt auf angezeigt Bildschirm dh:
.....
strOutput= "<xml>";
ComponentPresentationFactory cpf = new ComponentPresentationFactory(PublicationID);
for (int i =0; i < itemURIs.length; i++)
{
ComponentPresentation cp = cpf.getComponentPresentation(itemURIs[i], strComponentTemplateURI);
if(cp != null){
String content = "<xml><dynamicContent><subtitle><![CDATA[Außenbeleuchtung]]></subtitle></dynamicContent></xml>";
strOutput += content;
}
}
strOutput+= "</xml>";
......
die komponenten-ist mit dem Inhalt Broker DB veröffentlicht „XML-Format“ einen CT mit einem Ausgabeformat verwenden.
Die Veröffentlichung Ziel wird als Zielsprache eingerichtet: JSP und Standard-Codepage: korrekt Unicode UTF-8
Wenn ich den Inhalt der Vorschau mit dieser CT dann die Daten angezeigt werden:
<dynamicContent>
<tcm_id>tcm:345-23288</tcm_id>
<title><![CDATA[LED Road R250 - Maximum LED performance for street and highway illumination]]></title>
<subtitle><![CDATA[Außenbeleuchtung ]]></summary>
</dynamicContent>
Dies ist auch der Fall, wenn Sie über den Vorlagengenerator eine Vorschau anzeigen.
Der Broker DB ist eine Oracle-DB (Oracle Database 11g Enterprise Edition Veröffentlichung 11.2.0.2.0), und ich habe die charecter
kommen über gesetzt geprüftSQL> select * from v$nls_parameters where parameter like '%CHARACTERSET%';
PARAMETER VALUE
NLS_CHARACTERSET UTF8
NLS_NCHAR_CHARACTERSET UTF8
Hat jemand irgendwelche Beispiele, wie dies vor. Offenbar gibt es ein Problem mit dem DB-Speicher, der Verbindung zur Datenbank oder dem cp.getContent(); Methode.
Jede Hilfe wäre sehr geschätzt und wenn Sie weitere Fragen haben, lass es mich wissen.
Grüße, Chris
Wie sieht der Inhalt beim Abrufen aus SQLPlus aus? Haben Sie versucht, Ihre Protokollierungsstufe für das Debugging festzulegen und beim getContent-Aufruf nach Codierungsproblemen zu suchen? Haben Sie versucht, ComponentPresentationAssembler anstelle von ComponentPresentationFactory zu verwenden? –
Hallo Nuno, ich habe den Inhalt durch den Oracle DB Manager angesehen und es gibt keine Kodierungsprobleme beim Betrachten, aber das könnte sein, weil der Betrachter die Kodierung behandelt. Ich habe gerade meinen Code mit dem ComponentPresentationAssembler anstelle der ComponentPresentationFactory implementiert und hatte genau das gleiche Endergebnis. –