[C++] 166 FLTK : SFTP補助アプリの製作 日本語ファイル名への対応

[M1 Mac, Big Sur 11.6.8, clang 13.0.0, FLTK 1.3.8, NO IDE]

前回の続きです。

SFTP補助アプリですが、ファイル名に日本語が含まれる場合はクリップボードへコピーされないことが判明しました。毎度ながら実行ファイルでは問題なく、appファイルでおかしくなります。

解決方法はpbcopyの際のロケール設定です。日本語を全く受け付けないのではなく、文字化けでも構わないのでコピーして欲しかったです。解決の手掛かりになりますので。

AppleScriptで同じトラブルに見舞われた方のブログ記事を参考にしました。まさかpbcopyに変なクセがあるとは思いもよりませんでした。

void cmd_cb(Fl_Widget*, void*) {
    string cmd0;
    string cmd1;
    string cmd;

    int onoff_put = put_rbtn->value();
    int onoff_dir = dir_rbtn->value();

    if (onoff_put == 1){
        cmd0 = "put";
    } else {
        cmd0 = "get";
    }

    if (onoff_dir == 1){
        cmd1 = "-r";
    } else {
        cmd1 = "";
    }

    const char* fileName = file_input -> value();
    const char* toName = to_input -> value();

    cmd = cmd0 + " " + cmd1 + " \"" + string(fileName) + "\" " + string(toName);
    cout << "cmd " << cmd << endl;

    cmd_input -> value("");
    cmd_input -> value(cmd.c_str());

    string cmdCopy = "echo '" + cmd + "' | LANG=ja_JP.UTF-8 pbcopy"; // 対応箇所
    output_line -> insert(cmdCopy.c_str());
    output_line -> insert("\n");
    system(cmdCopy.c_str());
}

参考記事