ORACLE JAPAN Server Release 6.1

 

WebLogic Server 6.1J 日本語環境での使用にあたって

 

 


はじめに

6.1 でサポートするI18n/L10n関連の6.1での変更点、および主な機能とその注意点は以下のとおりです。

 


6.0 からの変更点

リクエストURLに応じたHTTPリクエストに対する文字セットの指定方法の変更 - <input-charset> の指定

HTTPリクエストに対するエンコーディングをWebLogic Server 6.0ではweb.xmlの weblogic.httpd.inputCharset で指定していましたが、WebLogic Server 6.1では weblogic.xml の <charset-params> で指定するように変更されました。

詳細については、「servlet/JSP を使用する場合の注意」の項を参照してください。

Servlet2.3への対応にともなう request.setCharacterEncoding() のサポート

WebLogic Server 6.1J ではServlet 2.3 に対応しています。これによりServlet 2.3 で新たに追加された、request.setCharacterEncoding() を使用できます。これはクライアントからのHTTPリクエストの文字セットを指定するメソッドです。<input-charset> と同等の機能を提供します。<input-charset> を使用するとリクエストURLのパス毎にエンコーディングを指定できますが、setCharacterEncoding を使った場合は呼び出し毎に設定することができます。<input-charset>を指定した上でsetCharacterEncodingを呼び出した場合、setCharacterEncoding の指定が有効になります。

詳細については、「servlet/JSP を使用する場合の注意」の項を参照してください。

JSP 1.2への対応にともなう pageEncoding ディレクティブのサポート

WebLogic Server 6.1J では JSP1.2 に対応しています。これにより、JSP1.2で新たに追加された page タグの pageEncoding ディレクティブを使用できます。 pageEncoding は JSP ファイル自体のエンコーディングを指定するものです。 WebLogicServerのJSPコンテナまたはJSPコンパイラはそのJSP ファイルをpageEncodingで指定された文字セットで読み込みます。 これにより、JSPファイルの文字セットとWebLogicServerがクライアントへ出力する文字セットとを別々に指定することが可能になりました。

詳細については、「servlet/JSP を使用する場合の注意」の項を参照してください。

SAX2サポート

WebLogic Server 組み込みのXMLパーサが xerces 1.2.0 から、xerces 1.3.1 へアップグレードされました。これにより、SAX2 を使用することが可能になりました。また、日本語を含んだXMLファイルをパースする際のいくつかの問題が解決されています。

 


管理コンソールを使用する場合の注意

起動時の言語について

最初に管理コンソールを起動したときに表示される言語は、お使いのWebブラウザで指定している最優先の言語になります。例えば、日本語Windowsをお使いの場合、最初に管理コンソールを起動すると、日本語で表示されます。最初に表示する言語を英語に切り替えたい場合には、ブラウザのオプション設定の「言語の優先順位」で「英語」を最優先にすることで変更できます。

起動後の言語の切り替え

コンソールのホーム画面から、[プリファレンス]ページで[言語] のドロップダウンボックスで使いたい言語を選択します。

 


WebLogic Server管理

WebLogic Serverのデフォルトのエンコーディングの指定方法

WebLogic Server 6.1Jは様々なスコープでエンコーディングを指定することができます。例えばJSPではJSP1.2仕様に準拠したページ毎のエンコーディングの指定を行う page タグがあります。 WebLogic jDriver ではJDBC接続のエンコーディングを weblogic.codeset プロパティで設定します。このように特定のスコープ毎に指定するエンコーディングは、WebLogicServer が動作するJavaVM のデフォルトのエンコーディングとは関係がありません。JavaVMが英語のlocaleであっても、日本語のJSPファイルを使ったサービスをすることには何ら問題ありません。しかしながら以下の項目についてはJavaVMのデフォルトのエンコーディングに依存して文字列を取り扱います。

これらはプラットフォーム毎のJavaVMのデフォルトのエンコーディング(Java システムプロパティの file.encoding に設定されたエンコーディング)で動作します。例えば、WebLogic Serverがターミナルコンソールへ出力するログメッセージは、そのプラットフォームの環境からJavaVMがfile.encoding システムプロパティに設定したエンコーディングとシステムロケールにより言語、エンコーディングが決まります。システムのロケールを切り替えることでWebLogic Servr のログメッセージの言語・エンコーディングを切り替えたい場合は以下のように指定します。なお、JavaVMのデフォルトのエンコーディングはVMの起動後に動的に切り替えることはできません。以下の設定を確認した後でWebLogic Server を再起動してください。

Windows 2000/Windows NT の場合

[コントロールパネル|地域(または地域のオプション)]から「英語(U.S)」または「日本語」を選択します。これにより、サーバは CP1252 または MS932 をデフォルトのエンコーディングとして動作します。

UNIX の場合

LANG 環境変数にプラットフォームでサポートするロケールを指定します。

サーバのエンコーディングと LANG 環境変数の設定は次のとおりです。

表 1-1 サーバのエンコーディングと LANG 環境変数の設定

プラットフォーム

エンコーディング

LANG 環境変数

Solaris

EUCJIS

SJIS

ja または ja_JP.eucJP

ja_JP.PCK

HP

EUCJIS

SJIS

a_JP.eucJP

ja_JP.SJIS

たとえば、Solaris で EUCJIS を指定する場合は次のようになります。

LANG=ja

サーバのエンコーディングの確認方法

以上のように、JavaVMのデフォルトのエンコーディングがWebLogic Serverのデフォルトのエンコーディングとなります。管理コンソールからログメッセージを参照することで確認することができます。手順は次の通りです。

  1. 管理コンソールの左ペインでサーバ名を右クリックして[サーバログを見る]を選択します。

  2. [このビューをカスタマイズ]をクリックします。

  3. [Sub String]テキストボックスに「file.encoding」を入力します。

  4. [適用]ボタンをクリックします。

表示されたエンコーディングがサーバのエンコーディングです。

管理サーバ、管理対象サーバの構成上の注意

ドメイン内の全てのWebLogic Serverのエンコーディングは同じものを使用します

WebLogic Server 6.1Jでは、ドメイン内の全てのサーバは同一エンコーディングに設定する必要があります。

例えば、ドメイン内に Windowsプラットフォームが存在する場合、ドメインをMS932などShift_JIS系のエンコーディングで統一します。エンコーディングの異なるサーバがあった場合、そのサーバのログは正しく表示する事ができません。

クラスタ構成上の注意

クラスタ内はすべて同じエンコーディングで統一してください。

 


servlet/JSP を使用する場合の注意

設定するエンコーディングのスコープと優先順位

WebLogic Server 6.1Jは一つのJavaアプリケーションプログラムです。全ての文字列は内部的にはUnicodeで扱います。しかし、HTTPプロトコル上のHTMLでは様々なエンコーディングが使われています。WebLogic Server はHTMLのデータを取り扱う際にはUnicodeとHTMLのエンコーディングの間でJavaのエンコーディングコンバータを使用してエンコーディング変換を行います。このため、WebLogic Server を使用する際にはサーバ内部で扱われるUnicode文字列とHTML上のエンコーディングとの変換をアプリケーションでどう扱うかは非常に重要な問題です。

WebLogic Server 6.1J には特定のスコープにもとづいてエンコーディングを指定するためのパラメータがいくつかあり§使用するアプリケーションに合わせてこの問題に対処できるようになっています。

また、WebLogic Server 6.1J では使用する個々のモジュールそれぞれに対してJavaVMのデフォルトのエンコーディングとは独立に、それぞれのエンコーディングの指定をすることが可能です。

WebLogicServer 6.1Jで日本語の文字列を扱う場合のスコープとして、J2EEの仕様や、WebLogic Server 独自の仕様などによりいくつか決められています。この中から、JSP/Servletに関連した指定項目としては次のものがあります。必ずしも全てを設定する必要はありません。以下の説明をよくご理解の上、お使いの環境に合わせて最も適切な項目を組み合わせてください。

エンコーディングの設定項目

これらの設定パラメータは同時に指定された場合の優先順位があらかじめ決まっています。例えば、JSPコンテナのデフォルトがShift_JISが設定されていて、page タグではEUC-JPが指定されていた場合には、page タグの指定が優先されるためEUC-JPが使われる、といった動きになります。基本的にはスコープの狭いものが優先されます。スコープが広い設定でデフォルトの指定を行い、特殊な扱いをする必要のあるものだけはスコープの狭い設定を使用する、などの設定方法が考えられます。

実際の開発では、特定の設定をアプリケーション全体で統一的に使用することをお勧めします。

日本語を使用する場合の全体の流れ

ここまで説明したように、WebLogic Server にはエンコーディングを指定するパラメータがいくつかありますが、次のように、HTTPリクエストからHTTPレスポンスまでをもれなく指定する必要があります。これらの指定がない場合は ISO-8859-1のエンコーディングが使用されます。

Servlet

  1. HTTPレスポンスのエンコーディング指定 --- response.setContentType()

  2. ブラウザの表示エンコーディング指定 --- HTML のmeta -tag, Content-Type

  3. HTTPリクエストのエンコーディング指定 ---- request.setCharacterEncoding or <input-charset>

JSP

  1. JSP ファイルのエンコーディングの指定--- page タグの pageEncoding (オプション)

  2. ページの出力エンコーディング指定 ---- page タグの contentType ディレクティブ

  3. ブラウザの表示エンコーディング指定 --- HTML のmeta -tag, Content-Type

  4. HTTPリクエストのエンコーディング指定 ---- request.setCharacterEncoding or <input-charset>

Servlet/JSP共通

  1. Java Encoding とIANA character set のマッピング(weblogic.xml への設定)

以下、Servlet の場合、JSPの場合などそれぞれの設定の詳細を説明します。

Servletの場合

HTTPレスポンスのエンコーディング指定 --- response.setContentType()

Servlet が生成するHTMLページのエンコーディングはsetContentType() を使用します。setContentType() はWriter を取得する前に呼び出す必要があります。

		res.setContentType("text/html;charset=Shift_JIS");
		PrintWriter out = res.getWriter();

ブラウザの表示エンコーディング指定 --- HTML のmeta -tag, Content-Type

指定したエンコーディングのwriter を取得したら、ブラウザで正しくエンコーディングを設定できるように、HTMLヘッダにContent-Type を指定します。

out.println("<meta http-equiv=¥"Content-Type¥" 
content=¥"text/html;CHARSET=Shift_JIS¥">");

HTTPリクエストのエンコーディング指定 ---- request.setCharacterEncoding or <input-charset>

ここまでの設定でWebLogic Server からクライアントへ送信するデータであるHTTPレスポンス の設定が終わりました。続いて、クライアントから WebLogicServer へデータを送信する場合のHTTPリクエストの設定方法を説明します。

HTTPリクエストのエンコーディングを指定するには以下の2つの方法があります。

  1. HTTPリクエストにエンコーディングを指定する

    request.setCharacterEncoding() を使用します。リクエスト毎にエンコーディングを指定することができます。動的にエンコーディングを制御するなど、細かい操作も可能です。また、setCharacterEncoding() は Servlet 2.3 の仕様に準拠していますからアプリケーションのポータビリティを確保することにもつながります。

    request.setCharacterEncoding("Shift_JIS");
    
    String pval = request.getParameter(pname);
    
    
    

  2. WebアプリケーションのDeployment Descriptor (weblogic.xml)でリクエストURLに対してエンコーディングを指定する <input-charset> を使用する。

    この設定はWebLogicServer6.0ではweb.xml に設定していたものです。WebLogicServer6.1からはこの設定をweblogic.xml で行うように変更されました。またエレメント名等も異なっています。6.0からの移行の際にはご注意ください。

    <input-charset> の指定はクライアント Web ブラウザからのリクエストURLで指定したリソースへのパスに対してエンコーディングを指定するものです。

    例えば、

JSPの場合

JSP ファイルのエンコーディングの指定--- page タグの pageEncoding (オプション)

次のようにpageタグ pageEncodingを指定すると、WebLogic Server 6.1J JSPコンテナまたはJSPコンパイラがJSPファイルを読み込むエンコーディングを指定できます。pageEncodingディレクティブはJSP 1.2の仕様により、WebLogicServer 6.1Jから使用できるようになったものです。

<%@ page contentType="text/html; charset=Shift_JIS"  
pageEncoding="Shift_JIS" %>

ページの出力エンコーディング指定 ---- page タグの contentType ディレクティブ

次のようにpage タグ contentType ディレクティブを指定すると、ページの出力エンコーディングを指定できます。

<%@ page contentType="text/html; charset=Shift_JIS" %>

contentTypeディレクティブはpageEncoding ディレクティブの指定がなかった場合にはJSPファイルを読み込むエンコーディングとしても使われます。このため、WebLogic Server 6.0以前のJSPファイルをWebLogic Server 6.1Jでそのまま使用することができます。

JSPコンテナではこの指定を見つけると、いったんそのJSPファイルのパースを中断し、新たに指定されたエンコーディングにファイルリーダを切り替え、再度ページの最初からパースを実行します。一つのファイルに2つ以上 contentType の指定があり、それぞれの指定が異なっていた場合にはパースエラーとなります。

このため、静的にインクルードするファイルで異なるエンコーディングを指定している場合もエラーになります。動的にインクルードする場合はエラーにはならず、文字化けが起こります(「include タグの静的・動的の違いと page タグでのエンコーディングの指定」を参照)。

ブラウザの表示エンコーディング指定 --- HTML のmeta -tag, Content-Type

通常のHTMLファイルでContent-Typeを指定するのと全く同じ書き方で指定します。

<meta http-equiv="Content-Type" 
content="text/html;CHARSET=Shift_JIS">

HTTPリクエストのエンコーディング指定 ---- request.setCharacterEncoding or <input-charset>

HTTPリクエストのエンコーディング指定はServlet で行う方法と全く同じです。「Servletの場合」の項を参照してください。

  1. リクエストにエンコーディングを指定する
    <%
    
        request.setCharacterEncoding("Shift_JIS");
    
        String pval = request.getParameter(pname);
    
    %>
    

  2. WebLogic Server WebアプリケーションのDeployment Descriptor で指定する weblogic.xml の <input-charset> を使用する。

    Servletの場合」の項を参照してください。

Servlet/JSP共通

Java Encoding とIANA character set のマッピング(weblogic.xml への設定)

setContentType() や、pageタグの Content-Typeディレクティブの指定にはIANAの文字セット名を使用します。しかし、JavaアプリケーションであるWebLogic Server 6.1J でエンコーディングを取り扱う場合には、これらの値はJava のエンコーディング名でなければなりません。WebLogic Server 6.1Jでは内部でデフォルトのマッピングを持っていて、通常はそれを使用します。また、デフォルトのマッピングにはIANAには定義されていないものの、歴史的にHTMLのContent-Type で使われてきたものも存在します。

例 : x-sjis ----> MS932

この設定は独自に変更することが可能です。以下のように、webアプリケーションの Deployment Descriptor で設定します。

例えばWebLogic Server 6.1Jでは、IANA文字セットのShift_JIS はJavaのShift_JISにマップしている (JavaではMS932のエイリアスとなっている) ため、contentType が 'Shift_JIS' の場合はMS932として扱われます。

注意: Javaでは IANA charset の Shift_JIS はMS932として扱われます。 (JDK1.1.8 以降)

したがって、デフォルトの設定で@、Aなどの MS932 独自文字を使用する事ができます。

デフォルトのマッピングとは異なるエンコーディングを割り当てて使うためには次のようにデフォルトのマッピングを上書きします。WebアプリケーションのDeployment Descriptor weblogic.xml の <charset-mapping>に次のように指定します。

この場合は、Shift_JISをSJISにマップしています。

<charset-params>
         <charset-mapping>
            <iana-charset-name>
                Shift_JIS
            </iana-charset-name>
            <java-charset-name>
                SJIS
            </java-charset-name>
         </charset-mapping>
      </charset-params>

この指定は J2EE 互換ではありません。この設定はWebLogicServer6.0ではconfig.xml に設定していたものです。WebLogicServer6.1からはこの設定をWebアプリケーションの Deployment Descriptor weblogic.xml で行うように変更されています。またエレメント名等も異なっています。6.0からの移行の際にはご注意ください。

注意: HTTPリクエストの GET/POST のエンコーディングの判定に HTTP ヘッダの acceptCharset を使用しない理由

HTTPプロトコルのリクエストヘッダで定義されている'acceptCharset'はリクエストに対するレスポンスのエンコーディングとして、クライアントが受け入れられるエンコーディングのリストを指定するものです。したがって、リクエスト自体のエンコーディングを指定するものではないため使用しません。

その代わりに WLS では <input-charset> を web.xml で定義することで特定のコンテンツに対する GET/POST リクエストのエンコーディングをサーバ側で指定します。また、WLS6.1 では <input-charset> が存在しない場合、GET/POST リクエストのエンコーディングを VMのデフォルトのエンコーディングとして扱います。

したがって、日本語NT上では<input-charset>を指定しない場合、GET/POST文字列はMS932として扱います。

iso-8859を使ったwork-around(回避策)をそのまま使用する場合の設定

iso-8859 を <input-charset> に指定すると、iso-8859を使用したworkaround をコードを修正することなくそのまま使用できます。

Workaround の例:

new String(request.getParameter(itemQ[i]).getBytes ("8859_1"), 
"SJIS")

ただし、HTTPリクエストで、HTTPヘッダに下記のようにContent-Type を指定するHTTPクライアントではこの回避策は使用できません。これはHTTPヘッダでの Content-Type の指定が<input-charset>の指定よりも優先するためです。この場合はアプリケーションプログラムのコードを修正する必要があります。

Content-Type: application/x-www-form-urlencoded;charset=shift_jis

include タグの静的・動的の違いと page タグでのエンコーディングの指定

静的インクルード

<%@ include file="relativeURL" %>

この場合、インクルードするファイルをすべて読み込んで一つのファイルにしてからJSPのコンパイルをする動作になります。したがって、インクルードするファイルにエンコーディングの指定があればインクルードされるファイルにエンコーディングの指定がなくてもインクルード元と同じエンコーディングのファイルとして扱われます。

また、インクルード元と、インクルード先のファイルでエンコーディングの指定が異なっているとJSPのコンパイルエラーとなります。

動的インクルード

<jsp:include page="{ relativeURL | <%= expression %>}" flush="true" 
/>

JSP インクルードでは、このページをロードした段階ではインクルードは行われず、タグのままのこります。そしてこのページが実行された段階でインクルードを行うため、インクルード元のエンコーディングの指定を引き継ぐ事ができません。

したがってインクルードされるファイルにも必ずエンコーディングの指定が必要になります。

 


JDBCを使用する場合の注意

Oracle jDriver を使用する場合

weblogic.jdbc.oci.Driver を使用するには以下のセットアップを行います。jDriver ライセンスの設定が必要になるので注意してください。

  1. startWebLogic.cmd ファイルに以下の変更を追加します。

    Oracle の bin と、WebLogicのOracle ociドライバネイティブライブラリのbinにPathを通します。

    %WL_HOME%¥bin¥oci816_8;d:¥oracle¥ora81¥bin
    

  2. Oracle の環境変数 NLS_LANG を指定します。

    NLS_LANGとJ Driver for Oracleのconnection propertiesである weblogic.codesetは常に同じエンコーディングである必要があります。

    NLS_LANG = japanese_japan.ja16sjis
    

    なお、NLS_LANGと weblogic.codeset の設定の関係については、『WebLogic jDriver for Oracle ユーザーズ ガイド』の「Oracleの高度な機能」の章の「コードセットのサポート」の項を参照してください。なお、Oracleデータベースがja16sjis で、NLS_LANGをjapanese_japan.ja16sjis、weblogic.codeset=MS932と指定することができる場合、Windowsプラットフォームで使われる文字セットをOracle データベースにストアすることができます。

    ここまでの設定でWebLogic Server から接続プールを使わないで WebLogic jDriver for Oracleドライバを使用することができるようになります。例えば、JSPやServletなどのJDBCクライアントから直接データベースに接続することができます。JDBCクライアントがWebLogic Server jDriver for Oracle を使用する場合のプログラミングについては、『WebLogic jDriver for Oracle ユーザーズ ガイド』の「WebLogic jDriver for Oracle の使い方」の章の「Oracle DBMS への接続」の項を参照してください。

    接続プールを使用する場合はさらに次の設定を管理コンソールから行う必要があります。接続プールの設定の詳細については、『WebLogic jDriver for Oracle ユーザーズ ガイド』の「WebLogic jDriver for Oracle のインストール」の章の「接続プールの設定」の項を参照してください。以下に設定例を説明します。

  3. 管理コンソールでの設定

    1. コネクション プロパティの設定

      URL:

      jdbc:weblogic:oracle
      

      ドライバ クラス名:

      weblogic.jdbc.oci.Driver
      

      プロパティ:

      user=scott
      
      password=tiger
      
      server=ora81
      
      weblogic.codeset=MS932
      

    2. 「対象」で使用するサーバまたはクラスタを選択します。

  4. WebLogic Server を再起動します。

以上でWebLogic Server jDriver for Oracle を使用できるようになります。

Oracle のoci ドライバを使用する場合の環境の設定方法

  1. startWeblogic.cmd ファイルに以下の変更を加えます。

    1. CLASSPATH に以下を追加します。
      d:¥oracle¥ora81¥jdbc¥lib¥classes12.zip;d:¥oracle¥ora81¥jdbc¥
      lib¥nls_charset12.zip
      

    2. PATHに以下を追加します。
      c:¥oracle¥ora81¥bin
      

  2. Oracle の環境変数 NLS_LANG を指定します。
    NLS_LANG = japanese_japan.ja16euc
    

    ここまでの設定でWebLogic Server から接続プールを使わないで Oracle ociドライバを使用することができるようになります。例えば、JSPやServletなどのJDBCクライアントから直接データベースに接続することができます。JDBCクライアントがOracle ociドライバ を使用する場合のプログラミングについては、Oracle のマニュアルをを参照してください。

    接続プールを使用する場合はさらに次の設定を管理コンソールから行う必要があります。接続プールの設定の詳細については、『 WebLogic Server 管理者ガイド』の「JDBC 接続の管理」の章の「接続プール」の項を参照してください。以下に設定例を説明します。

  3. 管理コンソールで以下を設定します。

    1. コネクション プロパティの設定

      URL:

      jdbc:oracle:oci8:@ora81
      

      ドライバ クラス名:

      oracle.jdbc.driver.OracleDriver
      

      プロパティ:

      user=scott
      
      password=tiger
      

    2. 「対象」で使用するサーバまたはクラスタを選択します。

  4. WebLogic Serverを再起動します。

以上でOracle Oci ドライバを使用できるようになります。

Oracle の thin ドライバを使用する場合の環境の設定方法

Thin ドライバではNLS_LANG環境変数は必要ありません。

  1. startWeblogic.cmd ファイルに以下の変更を加えます。

    1. CLASSPATH に以下を追加します。
      d:¥oracle¥ora81¥jdbc¥lib¥classes12.zip;d:¥oracle¥ora81¥jdbc¥
      lib¥nls_charset12.zip
      

    2. PATHに以下を追加します
      c:¥oracle¥ora81¥bin
      

      ここまでの設定でWebLogic Server から接続プールを使わないで Oracle thinドライバを使用することができるようになります。例えば、JSPやServletなどのJDBCクライアントから直接データベースに接続することができます。JDBCクライアントがOracle thinドライバ を使用する場合のプログラミングについては、Oracle のマニュアルをを参照してください。

      接続プールを使用する場合はさらに次の設定を管理コンソールから行う必要があります。接続プールの設定の詳細については、『 WebLogic Server 管理者ガイド』の「JDBC 接続の管理」の章の「接続プール」の項を参照してください。以下に設定例を説明します。

  2. 管理コンソールで以下を設定します。

    1. コネクション プロパティの設定

      URL:

      jdbc:oracle:thin:@jpsol1:1521:ora81
      

      ドライバ クラス名:

      oracle.jdbc.driver.OracleDriver
      

      プロパティ:

      user=scott
      
      password=tiger
      

    2. 「対象」で使用するサーバまたはクラスタを選択します。

  3. サーバを再起動します。

以上で Oracle thin ドライバを使用できるようになります。

異なるエンコーディングのDBに同時に接続する場合の制限事項

OCIドライバを使用する場合、NLS_LANGとweblogic.codeset の指定をセットで同じエンコーディングに指定する必要があります。これらのパラメータをセットで同じに設定しておけば、Oracle側からは特定のNLS_LANGを持つ一つのクライアントとして接続するため、エンコーディングの変換はOralce側が行います。例えばOracleDBがEUC-JPであっても、NLS_LANGとweblogic.codesetが両方ともSJISの場合、Oracle側が適当なエンコーディングの変換を行います。2つのパラメータが同じであればDBのエンコーディングが何であっても接続には問題ありません。

DBを使用する際のエンコーディング変換の注意

プラットフォームネイティブのエンコーディングから Java のエンコーディングへのコンバージョンと Java からプラットフォームネイティブのエンコーディングへのコンバージョンでは同じコンバータを使用しないと正しく文字を扱えない場合があります。これはUnicodeとJISの定義により生じる問題です。

ネイティブ <-> Java間でのエンコーディングコンバージョンで、例えば

DB -------------> WLS -------------> Web ブラウザ

SJIS MS932

のコンバータを使用すると、次のコードが正しく扱えません。

SJISコード

-------------------

"〜" (0x8160)

"‖" (0x8161)

"¢" (0x8191)

"−" (0x817C)

"£" (0x8192)

"¬" (0x81CA)

この場合は、WLS 上から Web ブラウザ への出力にSJISを明示的に使用する必要があります。たとえばJSPの page タグで

<%@ page contentType="text/html; charset=Shift_JIS" %>

と指定していた場合、この 'Shift_JIS' の指定をMS932ではなく、SJISのコンバータを使用してUnicode からネイティブへの変換をしなければなりません。

したがって、このような場合WebアプリケーションのDeployment Descriptor である weblogic.xml に次の定義を記述してWLSが内部的に持つデフォルトのエンコーディング対応テーブルを変更する必要があります。

      <charset-params>
         <charset-mapping>
            <iana-charset-name>
                Shift_JIS
            </iana-charset-name>
            <java-charset-name>
                SJIS
            </java-charset-name>
         </charset-mapping>
      </charset-params>

 


その他

example 使用の際の注意

日本語版 example では、コメント部分のみを翻訳することで、javadoc を日本語化しています。プログラム部分の文字列は翻訳していません。

codeset を指定する必要のある場所では明示的に Shift-JIS を指定しています。

exampleを修正して日本語を使用する場合にはこの codeset やcontenttypeの指定を目的のエンコーディングを指定するように修正する必要があります。

既知の問題

コンソールの日本語オンラインヘルプについて

[検索] タブでは、1バイト文字のみ検索が可能です。2バイト文字を使用した検索はできません。

管理対象サーバのサーバ名にマルチバイト文字は使用できません

管理対象サーバのサーバ名にマルチバイト文字を使用した場合、そのサーバは起動できません。管理コンソールでは作成できますが、使用することはできません。

例:管理対象サーバの起動コマンド

      java -ms64m -mx64m  -Dweblogic.Domain=mydomain 
-Dweblogic.Name=managedserver 
-Dweblogic.management.server=http://127.0.0.1:8801 
-Djava.security.manager -Djava.security.policy=weblogic.policy 
-Dweblogic.management.mbean.propInit=true weblogic.Server

ここで、管理対象サーバ名を指定する「-Dweblogic.Name」にはマルチバイト文字は使用できません。

cookie でのマルチバイト文字の使用について

現在 cookie ではマルチバイト文字列は使用できません。

MS SQL Server を使用する場合

ユーザ名に漢字が使用できません。

修正された問題

getCharacterEncoding() の問題

JSPで getCharacterEncoding() を実行すると、常に "ISO-8859-1" が返る問題は修正されました。現在のEncoding 指定を取り出すことができます。

 

back to top