Mam problem z kodowaniem znaków podczas przeglądania zawartości dynamicznej z bazy danych brokera.Problemy z kodowaniem znaków podczas pobierania komponentów dynamicznych z bazy danych Broker DB - Tridion, Oracle, JSP
Mam skryptletu, który wywołuje DB pośrednika do generowania ciągów XML i jest następnie analizowany przez XSL.
Mam pozbawiony powrotem mojego kodu podczas debugowania ten problem i skrypt teraz wygląda:
.....
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>";
......
Kiedy recznie overide ten kod i ustaw zawartość xml ciąg manualy w kodzie dane są wyświetlane poprawnie na ekran:
Konponent jest publikowany w brokerze treści DB za pomocą CT z formatem wyjściowym ustawionym na "Format XML".
Celem publikacji jest ustawiony jako Język docelowy: JSP i domyślny kod Strona: Unicode UTF-8
Kiedy podgląd zawartości przy użyciu tego CT następnie dane są wyświetlane poprawnie:
<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>
Jest tak również w przypadku podglądu za pomocą narzędzia do tworzenia szablonów.
Broker DB jest Oracle DB (Oracle Database 11g Enterprise Edition Release 11.2.0.2.0) i mam zaznaczone charecter ustawić
SQL> select * from v$nls_parameters where parameter like '%CHARACTERSET%';
PARAMETER VALUE
NLS_CHARACTERSET UTF8
NLS_NCHAR_CHARACTERSET UTF8
Czy zanim ktokolwiek się spotkałem żadnych przykładów jak ten. Wygląda na to, że istnieje problem z pamięcią DB, połączeniem z bazą danych lub z cp.getContent(); metoda.
Każda pomoc będzie bardzo doceniona i jeśli masz dodatkowe pytania, daj mi znać.
Pozdrowienia, Chris
Jak wygląda zawartość po pobraniu z SQLPlus? Czy próbowałeś już ustawić poziom logowania do debugowania i sprawdzić problemy z kodowaniem w wywołaniu getContent? Czy próbowałeś użyć ComponentPresentationAssembler zamiast ComponentPresentationFactory? –
Cześć Nuno, przeglądałem zawartość za pośrednictwem menedżera Oracle DB i nie ma problemów z kodowaniem podczas oglądania, ale może to być spowodowane tym, że przeglądarka obsługuje kodowanie. Właśnie zaimplementowałem mój kod przy użyciu ComponentPresentationAssembler zamiast ComponentPresentationFactory i miał dokładnie taki sam wynik końcowy. –