| 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が失敗する場合があります。