[ 新規に投稿する ]

マクロファイルの文字コードについてNo.09664
君房 さん 21/10/14 12:52 [ コメントを投稿する ]
  はじめまして、くんぼうと申します。

マクロファイルの文字コードについて、質問させて下さい。

秀丸のマクロファイルは、「S-JIS」「utf-8+Bあり」「utf-16+Bあり
」で保存するとあります。しかし、S-JIS以外で保存した場合、なぜか
マクロが動きません。例えば、一番簡単な例で

replaceall "曰う","曰ふ" ;

これ一行だけのマクロを「S-jis」で保存すると問題なく動くのですが、
「utf-8+Bあり」「utf-16+Bあり」で保存すると動きません。
文法エラーが出て、ファイルの最後の行が誤りだとメッセージがでます。

何か設定などあるのでしょうか?ご教示いただければ幸いです。

因みに、秀丸はVer.8.99.2で、32bit版です。
[ ]
RE:09664 マクロファイルの文字コードについてNo.09665
君房 さん 21/10/14 13:05 [ コメントを投稿する ]
  >はじめまして、くんぼうと申します。
> ......
>因みに、秀丸はVer.8.99.2で、32bit版です。

補足です。
「&#64087;」<->「練」等のS-jisで扱えない文字を変換する必要があるので、
utf-8等で動いてくれないと困るので、質問した次第です。

[ ]
RE:09663 deletecolormarker の使い方が分かりませんNo.09667
秀丸担当 さん 21/10/14 15:49 [ コメントを投稿する ]
 
こちらで試してみたところでは、問題無く動いています。
deletecolormarkerの第1パラメータは、レイヤー名で、「一時的なカラーマーカー」の場合は空の文字列で""となります。
数値で0を指定するのは本来の使い方とは違いますが、0の場合では一応""と同じように動作します。

「一時的なカラーマーカー」とは、[検索]→[カラーマーカー]のサブメニューにあるコマンドの色の付け方です。
「一時的なカラーマーカー」でないとしたら、他のレイヤー名かもしれません。
例えば、検索ダイアログの「すべて検索 - 色付け」の場合はレイヤー名が違って、findmarkerというキーワードで指定できます。("findmarker"という文字列ではなくfindmarkerというキーワード)
[ ]
RE:09667 deletecolormarker の使い方が分かりませんNo.09668
秀丸担当 さん 21/10/14 15:58 [ コメントを投稿する ]
 
すみません。試してみてできていたのは、座標がたまたま合っていただけの偶然でした。
deletecolormarker文で範囲を明示指定する場合は、xやyといった感じの座標ではなく、行番号と桁位置(linenoとcolumn)に相当する数え方を指定しなくてはいけないです。
deletecolormarker文は以下のようになります。

deletecolormarker "", 0, seltoplineno, seltopcolumn, selendlineno, selendcolumn;
[ ]
RE:09665 マクロファイルの文字コードについてNo.09669
秀丸担当 さん 21/10/14 16:04 [ コメントを投稿する ]
 
UTF-8のBOMありか、UTF-16のBOMありであればマクロは動作するはずです。
試しにやってみたところでは、Shift-JIS、UTF-8のBOMあり、UTF-16のBOMありのいずれでも動作しました。
何かこちらで行っていることと違うか、伝わっていないことがあるとおもうのですが、わからないです。
エラーメッセージの内容を正確に教えてもらえると何かわかるかもしれません。
[ ]
RE:09668 deletecolormarker の使い方が分かりませんNo.09670
おすぎ さん 21/10/14 18:05 [ コメントを投稿する ]
秀丸担当 さま

仰るとおりにしてうまくいきました。
ありがとうございました。

「deletecolormarker には、エディタ的に計算した行番号・カラム位置を
指定する必要がある」というのを、ヘルプに明記していただけますと、同じ間違いをしないですみます。

お忙しいところすみません。
よろしくお願いいたします。
[ ]
RE:09669 マクロファイルの文字コードについてNo.09671
君房 さん 21/10/14 18:50 [ コメントを投稿する ]
  >
> ......
>エラーメッセージの内容を正確に教えてもらえると何かわかるかもしれません。

秀丸担当 さま

エラーメッセージは

****.mac(5):文法エラーです
(ヘルプ参照)
文:replaceall


これだけです、因みに5とは、このマクロファイルの最後の行数で
す。改行とか入れると、数が増えます。

テストマクロは、以下の5行だけです。
------------------------------------------
//////////////////////////////////////
//新かなづかいを旧かなづかいに変換
//////////

replaceall "曰う","曰ふ" ;
---------------------------------------------

なお、マクロファイルは UTF-8 BOM有 CR+LFで保存しています。

如何なものでしょう?


[ ]
RE:09671 マクロファイルの文字コードについてNo.09672
秀丸担当 さん 21/10/15 09:03 [ コメントを投稿する ]
 
詳しい情報ありがとうございます。
このエラーは、スペルミスがあったり、文字列ではなく文としてUnicode独自の文字を含んでいたり、文法としておかしいときに出ます。

おそらくShift-JISとUTF-8(BOMあり)のファイルは、同じ内容ではないのではないかと思います。
2つのファイルを開いて[ウィンドウ]→[他の秀丸エディタと内容比較...]をすると違いがわかります。

Shift-JISのファイルを開いて、改めて名前を付けて保存して、UTF-8(BOMあり)として保存し直すと大丈夫になると思います。

逆に問題のあったUTF-8(BOMあり)のファイルを、Shift-JISで保存しようとすると、変換できない文字があるといった警告が出るかもしれません。(Unicode独自の文字が含まれていたら)
Unicode独自の文字でわかりにくいものとしては、一見空白に見える特殊な空白文字や、幅ゼロの空白文字もあったりします。
「文字コード表示」コマンドを使うと文字コードとしてわかります。(キー割り当てするか、メニュー編集では「表示」メニューの中にあります)
[ ]
RE:09670 deletecolormarker の使い方が分かりませんNo.09673
秀丸担当 さん 21/10/15 09:03 [ コメントを投稿する ]
 
確かに勘違いしやすいかもしれません。
lineno, column相当の行と桁であることも明記しておこうと思います。
[ ]
RE:09672 マクロファイルの文字コードについてNo.09674
君房 さん 21/10/16 17:54 [ コメントを投稿する ]
  >
> ......
>「文字コード表示」コマンドを使うと文字コードとしてわかります。(キー割り当てするか、メニュー編集では「表示」メニューの中にあります)

秀丸担当様

お返事、どうもありがとうございます。
ただ、私の場合正常に動くS-jisのテストマクロを、そのまま名前をつけてUTF-8 B有に変換して保存し、それを動かしても上記のエラーが出ます。両者を比較しても、「違いは見つかりません」と出ます。


さて、どうしてなのか分かりません。
何か、原因が考えられでしょうか?

君房 拝






[ ]
RE:09674 マクロファイルの文字コードについてNo.09675
Iranoan さん 21/10/16 18:51 [ コメントを投稿する ]
  君房さんこんにちは Iranoan です
> ただ、私の場合正常に動くS-jisのテストマクロを、そのまま名前をつけてUTF-8 B有に変換して保存し、それを動かしても上記のエラーが出ます。両者を比較しても、「違いは見つかりません」と出ます。


> さて、どうしてなのか分かりません。
> 何か、原因が考えられでしょうか?
エラーが起きる UTF-8 で保存したマクロはこのマクロだけでしょう?
もしこれだけでないなら、秀丸のバージョンが非常に古いということが考えられますが…
[ ]
RE:09675 マクロファイルの文字コードについてNo.09676
君房 さん 21/10/17 14:17 [ コメントを投稿する ]
  >君房さんこんにちは Iranoan です
> ......
>もしこれだけでないなら、秀丸のバージョンが非常に古いということが考えられますが…

Iranoan 様

秀丸は、8.99.2の最新版です。

そもそも、S-jisで扱えない文字を扱うために、マクロファイルもユニ
コード対応する必要があります。それで、まず、S-jisで正常に動いて
いたマクロをUTF-8で保存したら動きません。なので、原因を探るため、
先のテストマクロをUTF-8で動かしたら、それが動かない、という次第
です。もちろんS-jisで保存すれば動くのですから、訳が分かりません
???

なぜかしら??

君房 拝
[ ]
RE:09676 マクロファイルの文字コードについてNo.09677
h-tom さん 21/10/17 16:27 [ コメントを投稿する ]
  h-tom です。

>replaceall "曰う","曰ふ" ;
こちらでは、上記1行だけのマクロでも問題なく動きますよ。(UTF-8(BOM)、UTF-16LE(BOM)の両方とも)

ちなみに、上記1行をUTF-8(BOM)で保存したマクロをバイナリモードで開くと以下のようになりました。
(「ファイル」-「エンコードの種類」-「その他」-「エンコードの種類の選択」から「バイナリモード」を選んだ結果)

EF,BB,BF,72,65,70,6C,61,63,65,61,6C,6C,20,22,E6,
9B,B0,E3,81,86,22,2C,22,E6,9B,B0,E3,81,B5,22,20,
3B

あと、実行している Windows のバージョンは何になります?
[ ]
RE:09677 マクロファイルの文字コードについてNo.09678
秀丸担当 さん 21/10/18 08:55 [ コメントを投稿する ]
 
同じテキストを名前を付けて保存し直してもだめということで、他の可能性を考えてみて、原因がわかりました。
ファイルの最後にEOF制御文字(0x1A)が付いているとだめで、秀丸エディタの問題でした。
すみません。
おそらく[その他]→[ファイルタイプ別の設定]→[その他]→[保存・読込み]の「保存するときにEOF制御文字を付ける」がONになっているのではないかと思うので、これをOFFしてから上書き保存すると大丈夫になると思います。
今後のバージョンではEOF制御文字があってもできるように修正させていだきます。
[ ]
RE:09678 マクロファイルの文字コードについてNo.09682
君房 さん 21/10/21 12:09 [ コメントを投稿する ]
  >
> ......
>今後のバージョンではEOF制御文字があってもできるように修正させていだきます。

秀丸担当 様

返事が遅れて申し訳ありません。ご教示の通り、チェックを外すと、
無事動きました。どうもありがとうございました。
図らずも秀丸のDebugに貢献できたみたいで、少し嬉しいかも。

それから、コメントを下さった皆様、どうもありがとうございまいし
た。

また何かありましたら、よろしくお願いします。


君房 頓首頓首
[ ]

[ 新規に投稿する ]