サイト内の現在位置を表示しています。

ジョブの実行結果が文字化けする!こんな時に確認するポイント

JobCenter Lab vol.8

こんにちは。
WebSAM JobCenter ブログ担当の坂本です。

WindowsやLinuxなどプラットフォーム(OS)が混在した環境や文字コードが異なるUNIX環境でジョブを実行した場合、ジョブ実行時の標準出力や標準エラー出力の文字化けが発生したり、変数継承が正しく行われなかったという経験はありませんか?
プラットフォーム(OS)が混在した環境でジョブを実行する場合、文字コード変換の設定を実施する必要があります。今回は文字コード変換のポイントについて、いくつか例をご紹介します。文字コードが異なるプラットフォーム(OS)が混在した環境でWebSAM JobCenterを構築する場合に少しだけ迷うポイントかと思いますので参考にしてみてください。なお、今回ご紹介する環境は日本語環境でのお話となります。

インストール時に正しい文字コードを選ぼう

1つ目のポイントはインストールもしくはセットアップ (UNIX/Linux時)の際に設定する「文字コード」です。こちらは「インストールする環境の文字コード」に合わせて選択をお願いいたします。Windows OSの場合、文字コードにUNICODEを使用しない場合 (Shift-JIS等)は「非UNICODE」を選択、文字コードがUNICODEの場合は「UNICODE」を選択してください。
Windows OSの場合、一般的に文字コードはShift-JISを利用しますので「非UNICODE」を選択します。こちらは一度セットアップすると後から変更できません。もし変更する場合には再インストールが必要となります。

画面イメージ

UNIX/LINUX OSの場合はインストールする環境に合わせた文字コード(EUC、Shift-JIS、JP.UTF-8)を選択します。OSの文字コードの確認は「echo $LANG」コマンドで確認することが可能です。

[root@〇〇〇 bin]# echo $LANG

ja_JP.UTF-8

WebSAM JobCenterのセットアップ用コマンドであるnssetup実行時に「echo $LANG」コマンドで確認した文字コードを選択してください。
Select language code for JobCenter.

0 - English

1 - EUC

2 - Shift-JIS (MS-kanji)

3 - Chinese (GB18030)

4 - JP.UTF-8

Which language code do you use in this system ? (0/[1]/2/3/4)

また、UNIX/LINUX OSのWebSAM JobCenterをセットアップした後に、設定した文字コードを確認する場合には「JobCenter Lab vol.5」をご確認ください。

文字コード変換設定の必要性を確認しよう

次に2つ目のポイントです。下表のWebSAM JobCenter MG(以降MGと略します)とWebSAM JobCenter SV(以降SVと略します)の組み合わせの場合には文字コード変換の設定を行う必要がありますのでMGとSVの文字コードを確認してください。文字コード変換の設定については後述いたします。

MGとSVの組み合わせ 文字コード変換の設定の必要性
Windows OS(非UNICODE)
 ←→ UNIX/LINUX OS(UNICODE)
Windows OSのWebSAM JobCenterへの設定が必要です。設定方法については後述①を参照ください。
Windows OS(非UNICODE)
 ←→ UNIX/LINUX OS(SJIS)
Windows OS(UNICODE)
 ←→ UNIX/LINUX OS(SJIS)
UNIX/LINUX OS(EUC)
 ←→ UNIX/LINUX OS(SJIS)
文字コードSJISでセットアップしたUNIX/LINUX OS のWebSAM JobCenterのcodecnv.cnfに設定が必要です。
設定方法については後述②を参照ください。
UNIX/LINUX OS(UNICODE)
 ←→ UNIX/LINUX OS(UNICODE以外)
UNIX版同士のUNICODE混在環境でMGとSVの文字コードが異なる場合には設定が必要です。設定方法については後述③を参照ください。

(注意)UNICODE環境とEUC、またはSJIS環境を混在して利用する場合、WebSAM JobCenterのMG/SV全てを R13.2以降で統一する必要があります。

文字コード変換の追加設定を実施しよう

それでは具体的な文字コード変換の設定について下記①~③で説明します。

① Windows OSのWebSAM JobCenterの文字コード変換を設定する

Windows OSの場合、WebSAM JobCenterの文字コード変換の設定方法はMGでもSVでも同様です。

  • 1.
    管理者アカウントでWindowsにログオンし、Windowsの[スタート]-[プログラム]-[JobCenter]-[SV]-[サーバの環境設定]を選択して、サーバの環境設定を起動します。
  • 2.
    左ペインのプロパティをクリックし、右ペインの総合設定をダブルクリックして、総合設定のプロパティダイアログを表示します。
  • 3.
    [言語関連]部分の「UNIXマネージャと通信時、コード変換を行わない」にチェックを入れます。「OK」 または、[適用]ボタンをクリックします
画面イメージ

② SJIS側のWebSAM JobCenterの文字コード変換を設定する

UNIX/LINUX OSのWebSAM JobCenterの文字コード変換(EUC←→SJIS)を設定するには、nssetupでSJISを指定してセットアップした方のUNIX/LINUX OSのWebSAM JobCenterについて下記の設定ファイルを作成し、通信相手のホスト名を記述します。なお、本設定は次にWebSAM JobCenterを再起動するまで設定内容は反映されません。

/usr/lib/nqs/codecnv.cnf

ホスト名の記述は空白、TABもしくは改行コードで区切って複数設定できます。

(改行コードで区切った例)
hostname1
hostname2
hostname3

設定するホスト名は、nmapmgr(マネージャフレームのマシン一覧)に登録されているマシンの名前を利用してください。マシンの名前は、nmapmgrサブコマンドのget name <マシンID>で確認できます。

nmapmgrコマンドの使用例

画面イメージ

③ UNIX/LINUX OS のUNICODE混在環境でWebSAM JobCenter SVの文字コード変換を設定する

MGからSVにジョブを転送する場合に環境変数LANGはMG側からSV側にそのままの値が 転送されます。そのため、MGとSVの文字コードが違う場合には設定が必要です。設定方法はSV側のデーモン設定ファイル(daemon.conf)にshell_uselocallang=ONを指定します。

NQSDAEMON_OPT=-x shell_uselocallang=ON
SV側のWebSAM JobCenterのデーモン設定ファイルを修正した後、設定を反映させるにはSV側のWebSAM JobCenterを再起動します。

動作検証をしてみよう

それでは動作検証をしてみましょう。今回はMGがWindows OS (Shift-JIS) 、SVがLinux OS (JP.UTF-8)で動作検証を実施します。まずは何も設定しない状態で以下のジョブを実行します。ジョブの転送先がUNIX/Linux OSの場合にはジョブのスクリプトの先頭でLANG環境変数をSVの文字コード (JP.UTF-8)に設定する必要があります。

画面イメージ

ジョブを実行して実行結果を見ると出力結果が文字化けしています。SV上ではJP.UTF-8形式で標準出力されますが、出力結果はMGでコード変換されますのでこのように文字化けが発生します。

画面イメージ

前述しました①の設定を実施して再度ジョブを実行します。①を設定することでMG側で文字コードの変換を実施しなくなりますのでSV側のJP.UTF-8形式のまま(文字化けしていない状態で)CL/Winの出力結果に表示されるようになります。

画面イメージ

おわりに

今回のブログはいかがでしたでしょうか? 文字コードの異なる環境が混在となった場合にどのような設定を行えばよいかMGとSVの組み合わせにより設定が異なりますので、どのような設定が必要かわからなくなった時に今回ご紹介した内容をご活用頂ければ幸いです!

本ブログは皆様から頂いた様々なお問合せを参考にして更新しております。今後も皆様のお役に立つ情報を発信して行きたいと考えておりますのでWebSAM JobCenterブログをよろしくお願いいたします。

[参考情報]
https://jpn.nec.com/websam/jobcenter/download.html
 →WebSAM JobCenter 環境構築ガイド
  →日本語環境での文字コード変換

お問い合わせ

当ブログに関するお問い合わせは、WebSAM JobCenterお問い合わせ窓口までお問い合わせください。