>文字化けと文字コードについて文字化けと文字コードについて2006年07月06日biz-Streamをご使用中のユーザー様からお問い合わせいただくことの多い、文字化けと文字コードに関してご説明いたします。文字化けについてbiz-Streamでドキュメントを生成すると、プログラムの構造や動作環境により、特定の文字が正しく出力されず、文字化けが発生することがあります。biz-StreamはJavaのクラスライブラリであり、Java内部では文字はUnicodeで処理されます。Unicode以外の文字コードを使用している場合には、Javaの内部処理の過程で一度Unicodeへの変換が自動的に発生します。このため、多くの場合以下のような入力時と出力時の文字コードが異なっている場合に文字化けが発生します。設定した文字コードに含まれていない文字を使用している出力用に指定された文字コードに含まれない文字を利用している場合、正常に表示されません。「Shift_JIS」に「1」の文字が無いため、他のコードから変換を行った場合には正しく文字が表示できません。設定した文字コードからUnicodeへのマッピングが異なる入力/出力用に指定された文字コードとUnicodeの変換時に正しい文字コードが割り宛てられていないため、ある文字コードで出力しようとする際文字化けが発生します。「~」は「Shift_JIS」からUnicodeへ変換した場合と「Windows-31J」からUnicodeに変換した場合のUnicodeの文字コードが異なります。変換文字コードの誤りJavaでファイルを読み込む場合は、自動的に稼働環境の文字コードからUnicodeへの変換が行なわれます。このため、入力ファイルと環境の入力ファイルの文字コードが異なる場合には誤ったコード変換が行われ、文字化けが発生します。上記のように、文字化けは文字コードの変換処理に伴って発生します。従って文字化けを解消するためには、入力から出力までの一連の処理で、統一された文字コードを適用することが最も近道となります。biz-Streamにおける文字コード設定についてbiz-Streamでは、下記の箇所で文字コードを設定することができます。それぞれの設定のエンコーディングが異なる場合は、文字化けが起こる可能性があります。このため、文字コードの詳細について把握していない場合は、すべてのエンコーディング設定を同じにすることをお勧めいたします。レイアウトXMLファイルレイアウトのXMLファイル自体にエンコーディングが設定可能です。文字化けが発生した場合、表示されている文字がレイアウトファイルのエンコーディングに含まれているか確認し、正しく表示できるエンコーディングを指定してください。設定値としては、IANA(※[参照2])に登録されている文字集合が設定可能です。コード」により設定します。「エンコーディング」部分を修正します。その場合にはXMLファイル自体のエンコードも「エンコーディング」に合わせてください。プロパティファイルbiz-Streamではプロパティファイルの設定により、内部処理のエンコーディングが指定可能です。pdf_ja_JP.propertiesです。本属性は、PDF内部フォントの文字コード変換に使用されます。通常、PDFにおいて日本語フォントを利用する場合には、RKSJ系(=Shift_JIS)のフォントを使用し、それによって文字コード変換も決まります。従って、本来は文字コードのみを変更するのではなく、フォントを変更することによって、対応した文字コード変換が選ばれるというものになります。フォントを変更せずに文字コードのみを変更する場合にはシフトJIS系の文字コードを指定することが必要です。タイトル、作成者)などに対する文字コード変換を指定するものです。これは、PDFファイルのプロパティにて参照可能な情報です。このため、PDFの本文中の文字化けに関しては、上記のrksj.encodingの設定を変更してください。COMクライアントからCOMサーバに送られるデータの文字コード変換を指定します。COMサーバをご利用の際の文字化け処理に設定します。COMサーバを利用されていないお客様には関係ありません。Java実行環境のプロパティbiz-Streamの帳票生成部分はJavaのライブラリです。このため、Java実行環境のプロパティによるエンコーディング設定も文字化けの原因となります。Java実行時のデフォルト文字コード変換を設定します。省略時は、実行時のOSの環境に対応したものが設定されます。この設定はデータソースとして指定したCSVファイルなどをbiz-Streamで読み込む際の文字コードとして使用されます。」のメソッド呼び出しにより設定可能です。その他アプリケーションサーバで実行の際にはアプリケーションサーバにて設定可能です。このfile.encodingの設定はJavaのバージョンにより有効/無効な場合があります。発現頻度が高い文字化けの例を下記に記します。「1」は「Shift_JIS」に含まれない文字のため正しく変換できません。「~」はUnicodeへの変換時に正しく変換できません。「Windws-31J」に設定することで、レイアウトXMLファイルとフォントの文字コード変換設定が統一され、正しく文字を表示することができます。(「Windows-31J」と「MS932」は実質的に同一です。rksj.encodingを「Shift_JIS」に設定し、レイアウトXMLファイルとフォントの文字コード変換設定を統一しても、レイアウトXMLファイルの保存時の問題であるため、文字化けは解決しません。レイアウトXMLファイルのエンコーディングを「UTF-8」に設定した場合、文字コードの変換が発生しないため、文字化けは発生せず正しく文字を表示することができます。指定された「Shift_JIS」が入力元文字コードとして適用されます。「1」はShift_JISに含まれない文字のため正しく変換できません。「~」はUnicodeへの変換時に正しく変換できません。「MS932」に設定し、文字コード変換設定を統一することで正しく文字を表示することができます。》(※但し、Javaのバージョンにより有効でない場合があります。発生原因この場合は、CSVファイルをEUCファイルとして文字コード変換を行っているため、正しく文字が変換できません。「MS932」にすることで正しく文字を表示することができます。》(※但し、Javaのバージョンにより有効でない場合があります。)CSVファイルの文字コードをEUCコードに変換することで、「EUC-JP」からUnicodeへ文字変換が行われますが、「1」等の「EUC-JP」に無い文字がCSVファイル内にあった場合には正しく文字が表示することができません。CSVファイルを「UTF-8」に変換し、file.encodingを「UTF-8」又は稼働環境をUTF-8(LANG=UTF-8)にすることにより正しい文字を表示することが可能です。マッピングについての情報が提供されています。文字コードに含まれる文字に関する情報が提供されています。