ブローカー データベースから動的コンテンツを表示するときに、文字エンコードに問題があります。
ブローカー DB を呼び出して XML 文字列を生成し、XSL によって解析するスクリプトレットがあります。
この問題をデバッグするときにコードを削除したところ、スクリプトは次のようになりました。
.....
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>";
......
このコードを手動でオーバーライドし、コードでxml文字列コンテンツを手動で設定すると、データが画面に正しく表示されます。
.....
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>";
......
コンポーネントは、出力形式が「XML 形式」に設定された CT を使用してコンテンツ ブローカー DB に公開されます。
パブリケーション ターゲットは、ターゲット言語: JSP およびデフォルト コード ページ: Unicode UTF-8 として設定されます。
この CT を使用してコンテンツをプレビューすると、データが正しく表示されます。
<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>
これは、テンプレート ビルダーを使用してプレビューする場合にも当てはまります。
Broker DB は Oracle DB (Oracle Database 11g Enterprise Edition Release 11.2.0.2.0) であり、文字セットを確認しました
SQL> select * from v$nls_parameters where parameter like '%CHARACTERSET%';
PARAMETER VALUE
NLS_CHARACTERSET UTF8
NLS_NCHAR_CHARACTERSET UTF8
他の誰かがこのような例に出くわしたことがありますか? DB ストレージ、DB への接続、または cp.getContent(); のいずれかに問題があるようです。方法。
ご不明な点がございましたら、お気軽にお問い合わせください。
よろしく、クリス