【JS7】スクリプトに日本語を含むと文字化けする

420 views
Skip to first unread message

xenbeat

unread,
Mar 3, 2022, 5:07:31 AM3/3/22
to 日本JobSchedulerユーザーグループ(JJUG)
お世話になっております。質問です。

JOCとControllerはCentOS7、AgentがWindowsServer2012R2の環境において、
JOCで次のスクリプトを登録して実行したところ、実行に失敗したので、実行ログやエージェント側に転送されたスクリプト(cmd)を確認すると「あいう」の部分が文字化けしていました。
(スクリプト) test.bat -param1:あいう

JOCでは、日本語で登録出来ており、文字化けしていません。
また、上記日本語の部分を英語とかにすると上手く動きます。

おそらく、OS間の文字コードが違うからだとは思うのですが、なにか解決策はありますか?






Satoru Funai

unread,
Mar 5, 2022, 1:00:55 AM3/5/22
to xenbeat, 日本JobSchedulerユーザーグループ(JJUG)
xenbeatさん

Jobschedulerは内部コードがUTF-8なので、エージェント側がWindowsだとShiftJISなので化けていると思います。
Windowsのエージェントをcp983ではなくcp65001で実行するか、
パラメータを変数で定義して、データとして渡すかで試してみてください。
フナイ
----- 元のメッセージ -----
> 差出人: "xenbeat" <xenb...@gmail.com>
> 宛先: "日本JobSchedulerユーザーグループ(JJUG)" <jobsche...@googlegroups.com>
> 送信済み: 2022年3月3日, 木曜日 午後 7:07:30
> 件名: 【JS7】スクリプトに日本語を含むと文字化けする

> --
> このメールは Google
> グループのグループ「日本JobSchedulerユーザーグループ(JJUG)」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには
> jobscheduler-...@googlegroups.com にメールを送信してください。
> このディスカッションをウェブ上で閲覧するには
> https://groups.google.com/d/msgid/jobscheduler-ja/24ca082b-a914-4490-a8a5-92f7c550f84fn%40googlegroups.com
> にアクセスしてください。
>

xenbeat

unread,
Mar 7, 2022, 3:08:12 AM3/7/22
to 日本JobSchedulerユーザーグループ(JJUG)
ふないさん

ご返信ありがとうございます!

> Windowsのエージェントをcp983ではなくcp65001で実行するか、
> パラメータを変数で定義して、データとして渡すかで試してみてください。

前者は、エージェント上で稼働しているシステム的に難しいので、後者を考えているのですが、
「パラメータを変数で定義して、データとして渡す」とは具体的にどのようなイメージでしょうか?下記のようなイメージでしょうか?

(スクリプト) 
set p=あいう
test.bat -param1:%p%

無知で恐縮ですが、変数をどこで定義(ジョブリソース?スクリプト内でSETコマンド?等)すればよいのか、
またデータしとして渡すということについても理解が及びませんでした。

よろしくお願いいたします。

2022年3月5日土曜日 15:00:55 UTC+9 satoruf:

Satoru Funai

unread,
Mar 7, 2022, 11:25:48 PM3/7/22
to xenbeat, 日本JobSchedulerユーザーグループ(JJUG)
すいません、
ShiftJISで動くスクリプトにShiftJISの引数を与えるのは、一旦UTF8でテキストファイルに書き出してからShiftJISに変換する方法くらいしか思いつきません。
参考:https://sites.google.com/site/jobschedulerja/japanese

UTF8でも動くスクリプトなら、ジョブをPowershellで書いて、中で一時的にUTF8に設定して実行する方法も考えられます。
参考:https://dattesar.com/powershell-utf8/
https://kb.sos-berlin.com/display/PKB/JS7+-+How+to+run+PowerShell+scripts+from+jobs

フナイ

----- 元のメッセージ -----
> 差出人: "xenbeat" <xenb...@gmail.com>
> 宛先: "日本JobSchedulerユーザーグループ(JJUG)" <jobsche...@googlegroups.com>

> 送信済み: 2022年3月7日, 月曜日 午後 5:08:12
> 件名: Re: 【JS7】スクリプトに日本語を含むと文字化けする

> https://groups.google.com/d/msgid/jobscheduler-ja/edbfcbcd-2d9e-4c3c-b6fe-f06ee893787bn%40googlegroups.com
> にアクセスしてください。
>

xenbeat

unread,
Mar 11, 2022, 5:30:45 AM3/11/22
to 日本JobSchedulerユーザーグループ(JJUG)
ふないさん

なるほどです、、、ご回答ありがとうございます。
とりあえず私達はエージェント側で変換プログラムを用意する方向で考えたいと思います。

ちなみに、Hinemos等の日本製品は、マネージャがCentOS(UTF8)、エージェントがWindows Server(SJIS)で、今回のようにパラメータに日本語を含んでいても問題ないですが、
JS7は海外製品なので、そこの対応は難しそう(将来的に対応されることはなさそう)でしょうか?

ご意見いただけますと幸いです。
以上、よろしくお願いいたします。

2022年3月8日火曜日 13:25:48 UTC+9 satoruf:

Satoru Funai

unread,
Mar 13, 2022, 11:18:56 PM3/13/22
to xenbeat, 日本JobSchedulerユーザーグループ(JJUG)
xenbeatさん
さらに詳細調査した結果、エージェントが書き込む実行用スクリプト一時ファイル
JS7_AGENT_DATA/work/scripts
が ISO-8859-1 encodingで書き込まれるため、日本語が化けていることが判明しました。

JS-1983 Windows Agent should support UTF-8 encoding for job scripts
https://change.sos-berlin.com/browse/JS-1983

これはWindows版だけの問題でLinux版では問題ありません。
V.2.3で修正される予定です。
ふない


----- 元のメッセージ -----
> 差出人: "xenbeat" <xenb...@gmail.com>
> 宛先: "日本JobSchedulerユーザーグループ(JJUG)" <jobsche...@googlegroups.com>

> 送信済み: 2022年3月11日, 金曜日 午後 7:30:45

> https://groups.google.com/d/msgid/jobscheduler-ja/b2cb7287-9b43-4c6d-962b-229479491a4en%40googlegroups.com
> にアクセスしてください。
>

Satoru Funai

unread,
Mar 15, 2022, 3:38:08 AM3/15/22
to xenbeat, 日本JobSchedulerユーザーグループ(JJUG)
xenbeatさん
環境変数で引数(例では%TEXT%)を定義して値に日本語を入れて、スクリプト内でその変数を呼び出すととりあえず日本語表示はできました。

ジョブスクリプト
---
@cmd.exe /K chcp 65001
@echo off
@echo using workflow: %JS7_WORKFLOW_NAME%
@echo running job: %JS7_JOB_NAME%
@echo %TEXT%
---
ログ
2022-03-15 15:04:05.493+09:00 [MAIN] [OrderStarted] id=#2022-03-15#T32424521409-root, pos=0
2022-03-15 15:04:05.689+09:00 [MAIN] [OrderProcessingStarted] id=#2022-03-15#T32424521409-root, pos=0, Job=ハローワールドジョブ, Agent(url=http://localhost:5555, id=windowsAgent, time=2022-03-15 15:04:05.493+09:00)
2022-03-15 15:04:05.493+09:00 [MAIN] [Start] Job=ハローワールドジョブ, Agent (url=http://localhost:5555, id=windowsAgent)
2022-03-15 15:04:06.026+09:00 [STDOUT] Active code page: 65001
C:\ProgramData\sos-berlin.com\js7\agent_5555>using workflow: jdwHelloWorld
running job: ハローワールドジョブ
日本語
2022-03-15 15:04:06.036+09:00 [MAIN] [End] [Success] returnCode=0
2022-03-15 15:04:06.152+09:00 [SUCCESS] [OrderProcessed] id=#2022-03-15#T32424521409-root, pos=0, Job=ハローワールドジョブ, Agent(time=2022-03-15 15:04:06.036+09:00), returnCode=0
2022-03-15 15:04:06.337+09:00 [MAIN] [OrderFinished] id=#2022-03-15#T32424521409-root, pos=1

---
エージェント実行プロセスでchcp 65001していますので、スクリプトもutf8で動くものでないといけないと思います。

ご参考まで
ふない


----- 元のメッセージ -----
> 差出人: "Satoru Funai" <satoru...@gmail.com>
> 宛先: "xenbeat" <xenb...@gmail.com>
> Cc: "日本JobSchedulerユーザーグループ(JJUG)" <jobsche...@googlegroups.com>
> 送信済み: 2022年3月14日, 月曜日 午後 12:18:51
> 件名: Re: 【JS7】スクリプトに日本語を含むと文字化けする

xenbeat

unread,
Mar 15, 2022, 6:18:57 AM3/15/22
to 日本JobSchedulerユーザーグループ(JJUG)
ふないさん

諸々ありがとうございます。
v2.3で修正されるとのこと承知しました。

また、環境変数で日本語を渡せることを確認いたしました。
stdoutについても問題なさそうですが、stderrについては日本語が含まれると文字化けしないでしょうか?

以上、よろしくお願いいたします。

2022年3月15日火曜日 16:38:08 UTC+9 satoruf:
Reply all
Reply to author
Forward
0 new messages