Oracle® Fusion Middleware Oracle Reports ServicesレポートWeb公開ガイド 11g リリース 1 (11.1.1) B61375-04 |
|
前 |
次 |
多言語アプリケーションで発生する可能性のあるグローバリゼーションに関する問題の解決に役立つように、この項では次のトラブルシューティング情報を示します。
JSPファイルでのキャラクタ・セットの動的な埋込み
Oracle Reportsでは、Webレポートのテンプレートは、デフォルトで西ヨーロッパ言語のキャラクタ・エンコーディング用に構成されます。ただし、その他の言語については、<Meta>
タグのcharset属性および<%@page%>
ページ・ディレクティブの両方を使用して、あらゆるJSPファイルにキャラクタ・エンコーディングを指定できます。
JSPファイルに適切なキャラクタ・エンコーディングを動的に関連付けるには、次の変更を行います。
rw*.html
ファイルとblank_template.jsp
ファイルを編集します。
ページ・ディレクティブを次のように変更します。
<%@ page contentType="text/html;charset=yourIANAencoding
" %>
説明:
yourIANAencoding
はIANA定義のキャラクタ・セット名で、NLS_LANG
変数のNLS_CHARACTERSET
部分に対応しています。
<Head>
タグ内の<Meta>
タグを次のように変更します。
<meta http-equiv="Content-Type"
content="text/html;charset=yourIANAencoding" />
注意: テンプレート・ファイルの |
(ORACLE_HOME
/reports/templates/
にある)template.xsl
ファイルを編集します。
<xsl:output>
タグを次のように変更します。
<xsl:output
method="jsp"
indent="yes"
encoding="yourIANAencoding"
/>
説明:
yourIANAencoding
はIANA定義のキャラクタ・セット名で、NLS_LANG
変数のNLS_CHARACTERSET
部分に対応しています。
ファイルにページ・ディレクティブを追加します。
<%@ page contentType="text/html;charset=yourIANAencoding" %>
<HEAD>
タグ内の<META>
タグを次のように追加または変更します。
<meta http-equiv="Content-Type"
content="text/html;charset=yourIANAencoding" />
説明:
yourIANAencoding
はIANA定義のキャラクタ・セット名で、NLS_LANG
変数のNLS_CHARACTERSET
部分に対応しています。
グローバリゼーション・サポートの環境変数の設定
Tk2Motif.rgb
ファイルには、Motif版のOracle Toolkitのリソース設定が含まれます。たとえば、Oracle Reportsで使用するキャラクタ・セット(NLS_CHARACTERSET
で指定)とXフォントと間におけるフォント・マッピングが指定されます。
Oracle Reportsでは、このファイルがORACLE_INSTANCE/config/FRComponent/frcommon/guicommon/tk/admin/languag
ディレクトリで検索されます。このlanguage
は、NLS_LANG
の言語設定から導出されます。
このファイルが存在しない場合、ORACLE_INSTANCE/config/FRComponent/frcommon/guicommon/tk/admin
でデフォルトのバージョンが検索されます。このバージョンは、西ヨーロッパ言語のキャラクタ・セットであるWEISO8859P1
用に構成されています。
NLS_LANG
またはNLS_CHARACTERSET
で、NLS_LANG
に設定している言語に通常使用されないキャラクタ・セットを指定すると、Oracle Reportsによってエラーが生成されます。
たとえば、NLS_LANG=AMERICAN_AMERICA.JA16EUC
を設定すると、ORACLE_INSTANCE/config/FRComponent/frcommon/guicommon/tk/admin
ディレクトリでTk2Motif.rgb
が検索されます。NLS_LANG
に設定した言語はAMERICAN
であり、AMERICAN
には言語サブディレクトリが関連付けられていないため、Oracle Reportsではデフォルトのファイルが使用されます。このバージョンはWE8ISO8859P1
用に設計されており、使用するNLS_LANG
キャラクタ・セットはJA16EUC
であるため、Oracle ReportsによってREP-3000
エラーが生成されます。
この問題を回避するには、環境変数TK_UNKNOWN
の値を、使用するキャラクタ・セット固有のTk2Motif.rgb
ファイルの場所に設定します。
たとえば、NLS_LANG=AMERICAN_AMERICA.JA16EUC
の場合は、TK_UNKNOWN
=ORACLE_INSTANCE/config/FRComponent/frcommon/guicommon/tk/admin/JA
を設定します。使用する言語がAMERICAN
に設定されていても、Oracle Reportsでは、JA
言語サブディレクトリのTk2Motif.rgb
ファイルが使用されます。
WE8ISO8859P15キャラクタ・セット使用時に文字化けしたフォントの修正
UNIXでwe8iso8859p15
キャラクタ・セットを使用してマルチバイト・レポートを実行すると、文字化けした出力が表示される場合があります。
この問題を回避する手順は、次のとおりです。
デフォルトのプリンタの.ppd
ファイルに、使用しているフォントのエントリを作成します。このファイルは、次のディレクトリに格納されています。
$ORACLE_HOME/guicommon/tk/admin
注意: これらのエントリは、レポート出力で文字化けして表示されているフォントに対して作成します。 |
このフォントのAFMファイルのコード体系がAdobeStandardEncoding
の場合は、FontSpecific
に設定します。したがって、AFMファイルの次のエントリを変更します。
EncodingScheme AdobeStandardEncoding
これを、次のように変更する必要があります。
EncodingScheme FontSpecific
エンコードされたJSPレポートのオープンまたは実行
JSPレポートのキャラクタ・エンコーディング(EUC-JP
など)が、NLS_LANG
環境変数のキャラクタ・セット部分(JA16SJIS
など)と異なる場合は、次のエラーが発生します。
JSPファイルを実行するとき:
REP-6106 or 6104 with javax.servlet.jsp.JspException (multibyte) REP-0495 Unable to tokenize the query (singlebyte)
Oracle Reports Builderを使用してJSPファイルを開くとき:
REP-0069 Internal Error or REP-6106
この問題を回避するには、JSPレポートのキャラクタ・エンコーディングを、Oracle ReportsのNLS_LANG
変数のキャラクタ・セット部分に対応するIANA定義キャラクタ・セットに一致させる必要があります。
例:
JSPレポートのエンコーディング:
<%@ page contentType="text/html;charset=EUC-JP" %> <META http-equiv="Content-Type" content="text/html;charset=EUC-JP">
このJSPファイルを、キャラクタ・セット(EUC-JP
)でエンコードする必要があります。
Oracle Reportsのエンコーディング:
NLS_LANG=JAPANESE_JAPAN.JA16EUC
この例では、JSPレポートのエンコーディング(EUC-JP
)が、Oracle ReportsのNLS_LANG
のキャラクタ・セット部分、つまりJA16EUC
と一致しています。
ERR-063001 xxx.dtd nullの解決
XMLデータソースに対してレポートを作成するとき、XMLファイル(データソース)とDTDの両方のエンコーディングを、Oracle Reportsのエンコーディングに一致させる必要があります。
XMLレポートを表(たとえば、日本語の表)に対して作成する場合、グループ要素名は表の言語(つまり日本語)になります。データ・ソースに一致させるには、DTDのグループ要素名を日本語に設定する必要があります。XMLファイルおよびDTDファイルには、日本語をサポートするものであればどのようなエンコードでも実行できます(Shift_JIS
、EUC-JP
、UTF-8
など)。ただし、XMLデータソースとDTDのエンコーディングがOracle Reportsと異なると、次のエラーが表示されます。
ERR-063001 xxx.dtd null
注意: XMLスキーマを使用してルールを定義した場合、このエラーは表示されません。 |
この問題を回避するには、XMLレポートのデータ・ソースXMLファイルとDTDファイルの両方を、Reports RuntimeのNLS_LANG
のキャラクタ・セット部分にエンコードする必要があります。
たとえば、NLS_LANG=JAPANESE_JAPAN.JA16SJIS
の場合、データ・ソースXMLファイルとDTDファイルの両方を、Shift_JIS
にエンコードする必要があります。
HP-UXの日本語環境でのOracle Reportsの実行
HP-UXの日本語環境で、NLS_LANG=JAPANESE_JAPAN.JA16SJIS
と設定してOracle Reportsを使用する場合、Oracle Reportsを使用する前に、該当するTk2Motif.rgb
ファイルを変更する必要があります。これは、EUCにエンコードされた日本語リソースがこのファイルに含まれるためです。
Tk2Motif.rgb
ファイルをShift-JISエンコーディングに変換するか、このファイルから最後の7つのエントリを削除します。そうしないと、Oracle Reportsが失敗する場合があります。