Oracle® Fusion Middleware Oracle Reports ServicesレポートWeb公開ガイド 12c (12.2.1.2) E82763-01 |
|
![]() 前 |
![]() 次 |
多言語アプリケーションで発生する可能性のあるグローバリゼーションに関する問題の解決に役立つように、この項では次のトラブルシューティング情報を示します。
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" />
注意: テンプレート・ファイルのrw*.html とblank_template.jsp は、ORACLE_HOME /reports/templates/ ディレクトリにあります。 |
(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は、このファイルをディレクトリ$DOMAIN_HOME\config\fmwconfig\components\ReportsToolsComponent\<reports_tools_name>\tools\admin\language
内で検索します。ここでlanguage
はNLS_LANG
の言語設定から導出されます。
ファイルが存在しない場合は、Oracle Reportsは$DOMAIN_HOME\config\fmwconfig\components\ReportsToolsComponent\<reports_tools_name>\tools\admin
内のデフォルト・バージョンを検索します。このバージョンは、西ヨーロッパ言語の文字セットであるWEISO8859P1
用に構成されています。
NLS_LANG
またはNLS_CHARACTERSET
で、NLS_LANG
に設定している言語に通常使用されない文字セットを指定すると、Oracle Reportsによってエラーが生成されます。
たとえば、NLS_LANG=AMERICAN_AMERICA.JA16EUC
を設定した場合、Oracle Reportsはディレクトリ$DOMAIN_HOME\config\fmwconfig\components\ReportsToolsComponent\<reports_tools_name>\tools\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
=$DOMAIN_HOME\config\fmwconfig\components\ReportsToolsComponent\<reports_tools_name>\tools\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が失敗する場合があります。