6

ブローカー データベースから動的コンテンツを表示するときに、文字エンコードに問題があります。

ブローカー 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(); のいずれかに問題があるようです。方法。

ご不明な点がございましたら、お気軽にお問い合わせください。

よろしく、クリス

4

2 に答える 2

0

文字エンコーディングの問題は非常に複雑な場合があります。あなたの場合、すでにかなりの調査を行っているため、jsp ファイルに正しいページ エンコーディング セットがあるかどうかの確認を開始します。

<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
于 2012-11-23T17:52:32.953 に答える