TeraTermProject / teraterm

Other
497 stars 40 forks source link

マクロでgetenvにより環境変数定義を取得した際に、日本語を含んでいると文字化けする #388

Closed nbrains closed 1 week ago

nbrains commented 2 weeks ago

問題概要

TeraTerm v5.0~v5.3のマクロにおいて、getenv/expandenvにより環境変数定義を取得した際に、日本語を含んでいると文字化けする。 TeraTerm v4.108では発生しない。

再現手順

コマンドプロンプトから、ユーザー環境変数「TEST_ENV」に設定値「日本語」を設定する。

SetX TEST_ENV 日本語

下記内容で「env.ttl」を作成し、ttpmacro.exeにDrag&Dropする。

getenv 'TEST_ENV' m_Env
messagebox m_Env "title"

m_Env = '%TEST_ENV%'
expandenv m_Env
messagebox m_Env "title"

TeraTerm v5.0~v5.3で実行するとメッセージボックスに「???{??」と表示される。

期待動作

メッセージボックスに「日本語」と表示される。

確認環境

Windows 11 Pro 23H2

補足

環境変数の設定値からTeraTermのログの出力パスを切り替えようとした際に発生。 「C:\apps\プログラム\log」のような日本語を含むファイルパスでも発生しています。

TODO

zmatsuo commented 1 week ago

連絡ありがとうございます。

マクロコマンド getenv, expandenv が Unicode に対応していませんでした。 履歴など後回しで、取り急ぎ修正しました。

このように環境変数を設定して、

TEST_ENV=日本語😄👍

このように表示できることを確認しました。 388-1

バイナリを作りました。 https://ci.appveyor.com/project/teraterm/github-snapshot/builds/50971388/artifacts 試してみてください。

setenvも同様ですね。 後日対応します。

nbrains commented 1 week ago

修正版で改善された事を確認しました。 迅速なご対応ありがとうございました。

zmatsuo commented 1 week ago

setenvも対応しました。

main にマージしました。 バイナリを作っています。 https://ci.appveyor.com/project/teraterm/github-main/builds/50988279/artifacts

zmatsuo commented 1 week ago

クローズします。