自動起動マクロのパスの認識不具合No.10377
fzok4234 さん 21/05/02 06:04
 
お世話になっております。

さて、自動起動マクロのパスについていくつか問題が見つかりました

1. パス中の環境変数を正しく認識しません。
例えば、ユーザーアカウント名がtestuserの時、マクロディレクトリのa.macという
ファイルを
指定するために
%APPDATA%\Hidemaruo\Hidemaru\Macro\a.mac
を指定すると、マクロ実行イベント時に
---------------------------
ファイルのパス(ファイルを含んでいるはずのフォルダ自体)が存在しません。
ファイル名 = C:\Users\testuser\AppData\Roaming\Hidemaruo\Hidemaru\Macro\%APP
DATA%\Hidemaruo\Hidemaru\Macro\a.mac
---------------------------
というエラーが表示されます。
管理者が全ユーザーアカウントへ同じ自動起動マクロを設定するときに、各ユーザー
ごとの
アプリ設定ディレクトリを取得しないといけないため、処理が煩雑になります。

2. パス文字列に一部のUnicode文字が含まれていると正しく認識しません。
例えば、マクロファイル
C:\Users\testuser\Desktop\HidemaruBug\👩🏻‍👩&#12
7999;‍👧🏼‍👧🏾○○家\a.mac
を指定すると、マクロ実行イベント時に
---------------------------
ファイルへのアクセスでエラーが起きました。
エラーコード = 123
ファイル名 = C:\Users\testuser\Desktop\HidemaruBug\👩🏻‍
👩🏿‍👧�・‍👧🏾○○家\
a.mac
エラーコード 123 の意味:ファイル名、ディレクトリ名、またはボリューム ラベル
の構文が間違っています。
---------------------------
というエラーが表示されます。
さすがにわざわざディレクトリ名に結合絵文字を使うことは希少なケースと思われま
すが、
外国人のユーザーアカウント名にゼロ幅結合子が含まれる可能性はないとは言い切れ
ないため
大きな問題になりえます。

今のところ、発見できたのは自動起動マクロパスについてですが、これ以外にも秀丸
エディタ上で
扱うファイルパスで同様の不具合があるかもしれません。

バージョンはv8.98β6 Float x64についてです。



[ ]
RE:10377 自動起動マクロのパスの認識不具No.10378
fzok4234 さん 21/05/02 21:31
 
補足です

不具合1.の場合、単にマクロディレクトリのa.macファイルを指定するだけなら、
ディレクトリパス部分の
%APPDATA%\Hidemaruo\Hidemaru\Macro\
は不要です。しかし、例えば全ユーザー共通のマクロディレクトリを管理者が
%ProgramData%Hidemaruo\Hidemaru\Macro
などと定め、この中のマクロファイルを自動起動に指定させるようなケースではやは
り問題になるでしょう。



[ ]
RE:10378 自動起動マクロのパスの認識不具No.10380
秀丸担当 さん 21/05/06 09:33
 

自動起動マクロのパスにUnicode独自文字を書いた場合は確かにうまくいっていませ
んでした。
できるように修正します。

環境変数の展開については、ファイル名には%の文字も含むこともできるので、厳密
には現状の仕様ということになります。
ただマクロファイル用のフォルダの設定など、昔は環境変数の展開に対応していなか
ったものが、%で挟んだ記述をする人はいないだろうという都合のいい考えのもと、
仕様変更して対応しているところもあります。
展開できるのは、他には自動保存のパス、バックアップのパス、アイコンモジュール
のパスがあります。
マクロ登録も変更してしまってもいいかもしれません。問題がある場合は従来の設定
を捨てて新しい設定に移行するとかになったりします。慎重に考えます。

[ ]
RE:10380 自動起動マクロのパスの認識不具No.10382
fzok4234 さん 21/05/06 20:43
 
修正のご検討ありがとうございます。

[ ]
RE:10382 自動起動マクロのパスの認識不具No.10415
fzok4234 さん 21/05/26 04:28
 
v8.98β9 Float x64で動作確認を行いましたが、修正がうまく行われていないようで
す。

自動起動マクロの「編集後タイマー」のパスを、UTF-16 LE BOM無しでエンコードした
バイトコードで
25,00,44,00,65,00,73,00,6B,00,74,00,6F,00,70,00,
25,00,5C,00,48,00,69,00,64,00,65,00,6D,00,61,00,
72,00,75,00,42,00,75,00,67,00,5C,00,3D,D8,69,DC,
3C,D8,FB,DF,0D,20,3D,D8,69,DC,3C,D8,FF,DF,0D,20,
3D,D8,67,DC,3C,D8,FC,DF,0D,20,3D,D8,67,DC,3C,D8,
FE,DF,CB,25,CB,25,B6,5B,5C,00,61,00,2E,00,6D,00,
61,00,63,00,
となる文字列に設定すると、相変わらず
---------------------------
エラー
---------------------------
ファイルへのアクセスでエラーが起きました。
エラーコード = 123
ファイル名 = (このパス文字列自体が一部文字化けしている)
エラーコード 123 の意味:ファイル名、ディレクトリ名、またはボリューム ラベル
の構文が間違っています。


---------------------------
OK  
---------------------------
となってしまいます。一応、予め環境変数%Desktop%にデスクトップディレクトリのパス
C:\Users\testuser\Desktop
が設定されれいます。

それから、本コミュニテックスフォーラム自体についてですが、一部のUnicode文字
を投稿すると
👩
などという風に文字化けを起こしてしまいます。このため、Unicode絡みの不具合を
正確に
伝えることに著しく支障を来たしています。最初の投稿
https://www.maruo.co.jp/turukame/3/x10377_.html#10377
もその内容が正確に伝わっていなかったと思われます。故に、今回は上記のようにエ
ンコードした
バイナリデータの16進数値の形で文字列値を表現せざるを得ませんでした。このよう
に、Unicode文字の
投稿に大変手間がかかってしまうため、本フォーラムの文字化け対策の方は「なるべ
く早く」行って
頂くよう、心からお願い申し上げます。



[ ]
RE:10415 自動起動マクロのパスの認識不具No.10420
秀丸担当 さん 21/05/26 10:50
 

環境変数の展開と、Unicode文字である特定の文字があるとき、確かにおかしかった
です。
サンプルの文字列で再現できました。
自動起動マクロだけでなく、他の環境変数の展開のところも同じだと思うので、全部
修正させていただきます。

[ ]
RE:10415 自動起動マクロのパスの認識不具No.10423
秀まるお さん 21/05/26 11:03
 
 ここの会議室というか、コミュニテックスの会議室のシステムですが、すみません
が今からユニコード対応させるのは極めて困難でして、すみませんがユニコード文字
が「👩」のように化けてしまうのはがまんして使っていただくってことでお
願いするしか無いです。

 一応、「&#...」みたいに出てくることによってどういう文字を意図されてるのか
はおおよそ分かるし、必要に応じてうちの方から正確な文字を問い合わせさせていた
だくことも出来るかと思います。

[ ]
RE:10423 自動起動マクロのパスの認識不具No.10424
fzok4234 さん 21/05/26 11:06
 
> 一応、「&#...」みたいに出てくることによってどういう文字を意図されてるのかは
> おおよそ分かるし、必要に応じてうちの方から正確な文字を問い合わせさせて
> いただくことも出来るかと思います。

了解しました。



[ ]
RE:10415 自動起動マクロのパスの認識不具No.10431
でるもんたいいじま さん 21/05/26 15:15
 
でるもんた・いいじまです。

もうfzok4234さんもご了解済みということで蛇足ですが…

> 本コミュニテックスフォーラム自体についてですが、
> 一部のUnicode文字を投稿すると
> 👩
> などという風に文字化けを起こしてしまいます。

一部の文字、というか、正確に言えば、「ブラウザがShift_JISの範囲とは認識しな
い文字」ですね。これは文字化けというか、内部データとしてShift_JISを使ってい
る以上は仕方がないです。

☆ ☆ ☆

> このため、Unicode絡みの不具合を正確に
> 伝えることに著しく支障を来たしています。

そうですかね?
個人的にはむしろ、制御コードや合成文字なども含めてコードが正確にわかるので、
Unicodeがらみの複雑なデバッグには都合がいいのですが。

唯一の難点は、Windowsのcharmap.exeがいまだにBMPにしか対応していないことです
かね。
いっそのこと、Windowsと言わずMacでもスマホでも、モダンブラウザと適宜の
フォントさえあればどこでも動くようなものを誰かが作ってくれたものがあれば
嬉しいのですが、皆さんご存知ありませんかね?

とりあえず、このサイト↓
http://orange-factory.com/dnf/utf-8.html
の存在は知っているのですが、文字の名前で検索できないのと、Unicode⇔レガシー
コードの相互換算ができないのとで、ちょっと不便を感じているところです。「とり
あえず U+2FFFF まで追加対応してくれ」と凸してみようかな…

☆ ☆ ☆

この先はほぼ与太話。

ちなみに2chではこのへんへの対応は早くて、板ごとの設定ファイルでフラグを1つ立
てておけば書き手のブラウザが&#nnnnn;の形で送り込んだデータ(ログファイルには
そのまま 0x26 0x23 0x3* 0x3* ... 0x3B というバイト列が保存される)をあえてそ
のまま読み手に返す(のでそこで復元される)という対応をしていました。

#2014年に勃発した「お家騒動」以降の状況は把握していません。

コミュニテックスについても、もしかしたら今後投稿されてくる内容については、何
とかすれば同様の対応ができるかもしれません。ただ、既に化けた状態で公開されて
しまっている内容についてはそのまま放置しかありえない、これはfzok4234さんもご
了承ください。

何度も繰り返しますが、データの内部構造を変更することがプログラミングにとって
どれだけ重い負荷なのか、これをご理解ください。

☆ ☆ ☆

それと他のサイトでも、「〜」をきちんと投稿できている人と化ける人との両方がい
るので何とかしてくれ、という苦情が頻繁に上がっています。ここもShift_JISのサ
イトで、マンパワーが足りないという点でも状況は似ています。

ちなみにこの場合のad hocな解決策としては、普通に打っても化ける環境の人は「化
けていない'〜'」を他の人の投稿からコピペして辞書登録して、そのあとは一貫して
それを使えば大丈夫、というアドバイスを何度か私が書き込んでいます。

P.S.
というわけでいくつか気になった点があるので大変恐縮ですが、今この投稿が終わっ
たらこの場をお借りして、2つほど実験をさせてください。

[ ]
RE:10431 実験 Re: 自動起動マクロのパスNo.10432
でるもんたいいじま さん 21/05/26 15:24
 
でるもんた・いいじまです。
先ほどはWindowsからメールで投稿しましたが、今回はiPhoneからWeb掲示板のほうに
投稿しています。

ご承知のように、日本語のUnicode対応には「波ダッシュ問題」というものがあるわ
けですが、さてShift JISの投稿環境でiPhoneからそれらしき文字を入力したらどう
なるか。

iPhoneのIMEで、読みとして半角のハイフン「-」を入れると変換候補の中にそれらし
き文字は「〜」が1つだけ出てきます。
既存のASCII文字の全角形であることを示す「全」の表示はありません。

…さてこれはどちらとして認識されるか。

[ ]
RE:10432 実験 Re:自動起動マクロのパスのNo.10433
でるもんたいいじま さん 21/05/26 15:29
 
でるもんた・いいじまです。

> iPhoneのIMEで、読みとして半角のハイフン「-」を入れると変換候補の中に
> それらしき文字は「〜」が1つだけ出てきます。
> 既存のASCII文字の全角形であることを示す「全」の表示はありません。
>
> …さてこれはどちらとして認識されるか。

Webでもメールでも 〜 とは化けていません。
Shift_JISの0x8160として正しく処理されているようです。

この話をここで長々と続けるわけにもいきませんから、
あとは自前の環境で実験してみます。

[ ]
RE:10420 自動起動マクロのパスの認識不具No.10470
fzok4234 さん 21/05/31 14:53
 
v8.98β10 Float x64にて動作確認ができました。

自動起動マクロの「編集後タイマー」のパスを、UTF-16 LE BOM無しでエンコードした
バイトコードで
25,00,44,00,65,00,73,00,6B,00,74,00,6F,00,70,00,
25,00,5C,00,48,00,69,00,64,00,65,00,6D,00,61,00,
72,00,75,00,42,00,75,00,67,00,5C,00,3D,D8,69,DC,
3C,D8,FB,DF,0D,20,3D,D8,69,DC,3C,D8,FF,DF,0D,20,
3D,D8,67,DC,3C,D8,FC,DF,0D,20,3D,D8,67,DC,3C,D8,
FE,DF,CB,25,CB,25,B6,5B,5C,00,61,00,2E,00,6D,00,
61,00,63,00,
となる文字列に設定すると、正しく指定のマクロが本文本文入力のたびに実行されて
いることを確認しました。

修正ありがとうございます。


[ ]