マクロファイルの文字コードについて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:09665 マクロファイルの文字コードにつNo.09669
秀丸担当 さん 21/10/14 16:04
 

UTF-8のBOMありか、UTF-16のBOMありであればマクロは動作するはずです。
試しにやってみたところでは、Shift-JIS、UTF-8のBOMあり、UTF-16のBOMありのいず
れでも動作しました。
何かこちらで行っていることと違うか、伝わっていないことがあるとおもうのですが、
わからないです。
エラーメッセージの内容を正確に教えてもらえると何かわかるかもしれません。

[ ]
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: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に貢献できたみたいで、少し嬉しいかも。

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

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


君房 頓首頓首

[ ]