マクロコードの書き方No.09396
伯林 さん 21/05/24 21:03
 
 もしかしたら的外れか、場違いな質問でしたらごめんなさい。

 新聞社のサイトから記事をコピー、秀丸にペーストし、マクロで加工・保存の作業
を毎日行っています。
ところがごくたまに保存のところで「文字変換できない文字が含まれています。変換
できない文字を?に置き換えて保存します。」が出ます。例えば「頰」です。

これを回避するために加工のマクロに「頰」を「頬」に置換するコードを加えて

replaceall "頰" , "頬" , regular, nocasesense, nohilight;

としたのですが当然このマクロは保存の時に「頰」が?になってしまいます。
何かいい方法はないでしょうか。

「頬」Shift-Jis 0x966A
「頰」Shift-Jis U+9830


[ ]
RE:09396 マクロコードの書き方No.09397
伯林 さん 21/05/24 21:12
 
質問自体が文字ばけしてしまいました。
頰 は頬(ほほ)の異字です。

[ ]
RE:09396 マクロコードの書き方No.09398
Iranoan さん 21/05/24 21:32
 
伯林さんこんにちは、Iranoan です
> 新聞社のサイトから記事をコピー、秀丸にペーストし、マクロで加工・保存の作業
>を毎日行っています。
> ところがごくたまに保存のところで「文字変換できない文字が含まれています。変
>換できない文字を?に置き換えて保存します。」が出ます。例えば「頰」です。
<snip>
> replaceall "&#38960;" , "頬" , regular, nocasesense, nohilight;
>
> としたのですが当然このマクロは保存の時に「&#38960;」が?になってしまいます。
もっと素直に UTF-8 で保存してはどうでしょう?

こちらのほうが可読性も勝っていますし、後から検索などもしやすいと思います

[ ]
RE:09398 マクロコードの書き方No.09400
秀丸担当 さん 21/05/25 10:00
 

Iranoanさんの言われるようにマクロファイル自体をUnicodeで書くのが簡単だと思い
ます。
マクロファイルはUTF-8やUTF-16でも書けますが、UTF-8の場合BOMが無いと誤認識の
可能性があるので、UTF-16にするのが確実です。UTF-16はデフォルトでBOMありにな
ります。

Shift-JISのマクロで書くとしたら、Unicodeの文字コードで記述する方法があります。
U+9830だとしたら、文字列の中に\uに続いて4桁書くとできます。
replaceall "\u9830" , "頬" , regular, nocasesense, nohilight;

[ ]
RE:09400 マクロコードの書き方No.09401
Iranoan さん 21/05/25 14:01
 
秀丸担当さんこんにちは、Iranoan です
> Iranoanさんの言われるようにマクロファイル自体をUnicodeで書くのが簡単だと思
>います。
私が書きたかったのは、マクロでなく編集しているファイルの方です
& を使っているので、HTML/XML でしょうから

[ ]
RE:09401 マクロコードの書き方No.09402
伯林 さん 21/05/25 15:52
 
Iranoanさん
秀丸担当さん
早速レス頂き感謝いたします。

質問自体が文字化けで申し訳ありません。
お二方の
>もっと素直に UTF-8 で保存してはどうでしょう?
>こちらのほうが可読性も勝っていますし、後から検索などもしやすいと思います

>U+9830だとしたら、文字列の中に\uに続いて4桁書くとできます。
>replaceall "\u9830" , "頬" , regular, nocasesense, nohilight;

どちらも参考にさせていただきます。でもユニコードやらエンコードの知識ゼロです
ので
も少し勉強します。
秀丸担当さんの
>replaceall "\u9830" , "頬" , regular, nocasesense, nohilight;
ありがたく使わせていただきます。

[ ]
RE:09402 マクロコードの書き方No.09403
Iranoan さん 21/05/25 17:01
 
伯林さんこんにちは、Iranoan です
まず前提として
>  新聞社のサイトから記事をコピー、秀丸にペーストし、マクロで加工・保存の作
>業を毎日行っています。
ということでしたので、先の投稿で
A 新規ファイルを開いて秀丸にペースト後マクロで加工し、適当な新規のファイルと
して保存
B 新規ファイルを開いて秀丸にペースト後マクロで加工し、既存のファイル a に追
加保存
C 既存のファイル a を開いて秀丸にペースト後マクロで加工し、上書き保存している
のどれかだと思い回答しました

この予測が間違っていれば、元々見当違いなので、以下は無視してもらえば良いです
> どちらも参考にさせていただきます。でもユニコードやらエンコードの知識ゼロで
>すので
> も少し勉強します。
A〜C で編集するファイルを UTF-8 などにするだけなので、あまり必要な知識はあり
ません
今はメモ帳ですら UTF-8 に対応しているので

必要なのは、次の変更だけです
・B, C のどちらかなら、まずファイル a を開き、「名前を付けて保存」の「エン
コードの種類」で「Unicode (UTF-8)」で保存し直す
  更に C の場合でマクロでファイル a を開いている時は、(自動認識がたいていう
まく働きますが) 念の為
  openfile $filename, uft8;
  と utf8 オプションを追加する
・A, B どちらかなら、保存のオプションに同じく utf8 オプションを追加する
  saveas $filename, utf8;
  appendsave $filename, utf8;
  の要領

[ ]
RE:09403 マクロコードの書き方No.09404
伯林 さん 21/05/25 18:34
 
Iranoan さん、丁寧なレスありがとうございます。
やっている作業はAです。
>A 新規ファイルを開いて秀丸にペースト後マクロで加工し、適当な新規のファイル
>として保存
保存でエラーとなると、手動で修正作業していました。

>必要なのは、次の変更だけです
>  openfile $filename, uft8;
>  と utf8 オプションを追加する

>  saveas $filename, utf8;
>  appendsave $filename, utf8;

知識のない悲しさで、マクロでどうやってエンコードを切り替えるのかちょっと呆然
となっていました。オプションの utf8 にはたまげました。

早速やってみます!。

[ ]