2012-11-23 18 views
6

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

+0

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? –

+0

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. –

Odpowiedz

0

kwestie kodowania znaków mogą być dość skomplikowane. W twoim przypadku, ponieważ zostało to już zrobione sporo dochodzenie, chciałbym zacząć od sprawdzenia, czy plik JSP ma prawidłowy zestaw kodowania strony:

<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %> 
+0

Cześć Qurijn, dodałem to do kodu skryptu i nie zmieniło to problemów, które widzę. Dzięki za szybką odpowiedź –

+0

Czy jesteś pewien, że twoje CP (typeMapping = ComponentPresentation w cd_storage_conf.xml) są publikowane w bazie danych? – Quirijn