デコーディング ミスNo.35925
mtriver さん 17/07/29 17:27
 
mtriver です。

スマホ(Android)の連絡先をイクスポートしたものを秀丸エディタで開くと以下
のように文字化けします。(以下は Vcard 構成の一部です。

BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E4=B8=89=E4=BA=95=E4=BD=8F=E5=8F=
8B=E9=8A=
80=E8=A1=8C;;;;
FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E4=B8=89=E4=BA=95=E4=BD=8F=E5=8F
=8B=E9=8A=
80=E8=A1=8C
X-PHONETIC-FIRST-NAME;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E3=81=BF=E3=8
1=A4=E3=81
=84=E3=81=99=E3=81=BF=E3=81=A8=E3=82=82
TEL;WORK:0xxxxx1175
TEL;WORK:0xxxxx1171
END:VCARD

これを「文字化け解読ツール Version 2.0.8」と言うので開き(D&D)、UTF-7/8
を選択すると以下のようになります。

BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:三井住友銀行;;;;
FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:三井住友銀行
X-PHONETIC-FIRST-NAME;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:みついすみとも
TEL;WORK:0xxxxx1175
TEL;WORK:0xxxxx1171
END:VCARD

エンコーディングが QUOTED-PRINTABLE だと上手く行かないようですが如何で
しょうか?

[ ]
RE:35925 デコーディング ミスNo.35926
秀丸担当 さん 17/07/31 09:33
 

秀丸エディタはQUOTED-PRINTABLEには対応していないというか、テキストファイ
ル全体のエンコーディングとしては、QUOTED-PRINTABLEは扱わない(扱うことが
できない)のが通常だと思います。
むしろ、環境を問わず、エラーにならずに「=XX」の形で読み込める(印字でき
る)形式であるともいえます。

メールやvCardの全体ではなく一部の領域だけで記述するためのものなので、テ
キストファイル全体に適用してしまうと、読み込みと保存で違う情報になってフ
ァイルは壊れる可能性があります。
例えば3行目先頭をQUOTED-PRINTABLEで保存すると、
N;CHARSET=3DUTF-8;
になって、この保存したファイルを読み込もうとするとおかしくなります。

やるとしたら、マクロや変換モジュールで特定の領域だけを変換するようなもの
があったらいいと思いますが、少し探してみた限りでは無さそうでした。

現状で秀丸エディタで手動でやるとしたら、以下の手順でやると、無理矢理でし
が一応できると思います。

1.該当部分をコピー
=E4=B8=89=E4=BA=95=E4=BD=8F=E5=8F=8B=E9=8A=80=E8=A1=8C

2.新規作成して貼り付け

3.カンマ区切りとなるように置換
E4,B8,89,E4,BA,95,E4,BD,8F,E5,8F,8B,E9,8A,80,E8,A1,8C,

4.バイナリモードにする
 (キー割り当てしておくか、または[その他]→[その他のコマンド]→[ファイ
ル]→[バイナリモード])

5.適当なファイル名で保存する

6.[ファイル]→[エンコードの種類]→[Unicode(UTF-8)]にして読み込みなおす

[ ]
RE:35926 デコーディング ミスNo.35928
でるもんたいいじま さん 17/07/31 10:17
 
でるもんた・いいじま@秀丸愛用者です。

> 例えば3行目先頭をQUOTED-PRINTABLEで保存すると、
> N;CHARSET=3DUTF-8;
> になって、この保存したファイルを読み込もうとするとおかしくなります。
>
> やるとしたら、マクロや変換モジュールで特定の領域だけを
> 変換するようなものがあったらいいと思いますが、
> 少し探してみた限りでは無さそうでした。

nkf.exe があればマクロで実装するのは難しくなさそうですね。
マクロの runex 文では標準入力に「選択範囲」を指定できるので、
それをそのまま渡せばよさそうです。
https://ja.osdn.net/projects/nkf/forums/1007/28347/
ただし、上記の掲示板によると、nkf.exe の一部のバージョンには
バグがあるそうです。プロジェクトのトップページ
(https://ja.osdn.net/projects/nkf/)から直接ダウンロードできる
ものの中では、「2.1.1」を避ければ問題ないはずです。

変換モジュールを作るのもそれほど難しくなさそうです。
C言語のリハビリとDLL作成の勉強とを兼ねて、作ってみましょうか
ね…と書きかけたのですが、nkf でデコードするマクロを書くのが
いちばん手っ取り早そうです。

ところで、秀丸メールのほうのソースコードには当然、Quoted-Printable
やBASE64 をエンコード・デコードして、文字コードの変換まで行うサブ
ルーチンがあるはずですが、そのコードを流用して、秀丸エディタの
マクロからも使える変換モジュールを作っていただくことは可能でしょう
か? >>サイトー企画の皆様

…でももしかしたら、「秀丸メールなら既にマクロで処理できますので、
ぜひこの機会にお買い求めください」というお返事になったりして^^

[ ]
RE:35928 デコーディング ミスNo.35929
秀まるお2 さん 17/07/31 11:41
 
 僕の作った変換モジュールで、base64デコードってのがあります。

    http://hide.maruo.co.jp/lib/hmconv/hmfbase64_150.html

 これは、実は内部的にはQuoted-Printableのデコードの処理も入ってますが、
その処理を動かすためには、

    =?shift-jis?q?=81=40?=

 みたいにメールの中に出てくる形式になってないとダメです。

 今回のケースなら、

 検索:(ENCODING=QUOTED-PRINTABLE:)(.*)$
 置換:\1=?utf-8?q?\2?=
 正規表現:ON

 で全置換してから「すべて選択」、「変換 - BASE64をデコード」とすれば、
一応それで変換するようではあります。

 「=XX=XX....」の羅列を選択して変換というのは無理ではありますけども。

 ソースコード付いてるので直してくれてもいいですけども。

[ ]
RE:35929 デコーディング ミスNo.35930
mtriver さん 17/07/31 14:43
 
mtriver です。

皆様、いろいろ議論ありがとうございます。

:  僕の作った変換モジュールで、base64デコードってのがあります。

これは入れてありましたのでやってみました。

:  今回のケースなら、
:
:  検索:(ENCODING=QUOTED-PRINTABLE:)(.*)$
:  置換:\1=?utf-8?q?\2?=
:  正規表現:ON
:
:  で全置換してから「すべて選択」、「変換 - BASE64をデコード」とすれば、
: 一応それで変換するようではあります。


確かに上手く行きました。

しかし、アドレスなどのように

ADR;X-POSTAL;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;;=31=・・・
=82・・・=
=83・・・=
=35;;;;

などと複数にまたがる行は、

ADR;X-POSTAL;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;; (以下は次行に)

=31=・・・=82・・・=83・・・=35;;;;

の如く、先頭の '=' をとって1行にしてやる必要がありました。

:  「=XX=XX....」の羅列を選択して変換というのは無理ではありますけども。

このことかも知れませんが?

:  ソースコード付いてるので直してくれてもいいですけども。

私には荷が重すぎそうです。

[ ]
RE:35930 デコーディング ミスNo.35931
秀まるお2 さん 17/07/31 16:30
 
> ADR;X-POSTAL;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;;=31=・・・
> =82・・・=
> =83・・・=
> =35;;;;

 とりあえず、

 検索:(ENCODING=QUOTED-PRINTABLE:.*)=\n(=.*)(?:|(?:=\n(=.*)(?:|(?:=\n(=.*)
(?:|(?:=\n(=.*)))))))
 置換:\1\2\3\4\5

 とすれば、複数行にまたがったQuoted-Printableの行が1行に変換できます。それ
をやってから「=?utf-8?q?....」に変換する作戦でどうでしょうか。

 上記例は5行まで対応ですけども。

[ ]
RE:35931 デコーディング ミスNo.35932
mtriver さん 17/07/31 17:05
 
mtriver です。

: > ADR;X-POSTAL;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;;=31=・・・
: > =82・・・=
: > =83・・・=
: > =35;;;;


:  とりあえず、
:
:  検索:(ENCODING=QUOTED-PRINTABLE:.*)=\n(=.*)(?:|(?:=\n(=.*)(?:|(?:=\n(=.*)
: (?:|(?:=\n(=.*)))))))
:  置換:\1\2\3\4\5

43kB のVCFファイルをほぼこれで上手く変換できました。

:  上記例は5行まで対応ですけども。

2か所が、手動で1行にそろえた場合と違った結果が出ました。
1つは上記の4行の例ですが、=35;;;; の部分がそのまま変換されず残ります。

2つ目は、
N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=55=48・・・=
;;;;

と2行‐或いは ;;;; だけの行がそのまま残ります。ここは前の行の最後につ
く部分だと思いますが。

[ ]
RE:35932 デコーディング ミスNo.35933
秀まるお2 さん 17/07/31 17:27
 
 うまく変換できたということでもういいのかなぁという気がしますが、もしう
まくいかなかった所にも対応させるとしたら、具体的にダメな例のサンプルデー
タを教えていただければ、その辺の正規表現パターンが改良できるかなぁと思い
ます。

 (個人情報の関係もあるので簡単にサンプル提供って訳にもいかなそうですけ
ども)

 =XXの所を適当に伏せ字にして、例えば「=41=41=41」に全部変換した例とかで
も提供いただければ、こちらでテストして改良などしてみたいと思います。

 とりあえず、もう今後変換することも無いってことでしたら、そのまま放置と
いうことでOKです。

[ ]
RE:35933 デコーディング ミスNo.35934
でるもんたいいじま さん 17/07/31 19:27
 
でるもんた・いいじまです。

mtriverさん(hidesoft.2:35930):
> ADR;X-POSTAL;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;;=31=・・・
> =82・・・=
> =83・・・=
> =35;;;;
> などと複数にまたがる行は、
> ADR;X-POSTAL;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;; (以下は次行に)
> =31=・・・=82・・・=83・・・=35;;;;
> の如く、先頭の '=' をとって1行にしてやる必要がありました。

なるほど、その問題がありましたか。ということで秀まるおさんが

秀まるおさん(hidesoft.2:35931):
> とりあえず、
>  検索:(ENCODING=QUOTED-PRINTABLE:.*)=\n(=.*)(?:|(?:=\n(=.*)(?:|
>     (?:=\n(=.*)(?:|(?:=\n(=.*)))))))
>  置換:\1\2\3\4\5
> とすれば、複数行にまたがったQuoted-Printableの行が1行に変換できます。
> それをやってから「=?utf-8?q?....」に変換する作戦でどうでしょうか。
> 上記例は5行まで対応ですけども。

と提案されていますけれど、けっこうな力技ですねえ^^
これだけ複雑な正規表現だと、手書きしたものをどこかに保存しておいて
コピペするのではなく、マクロで自動生成したほうがいいと思います。

…ということで書いてみました。
下記の内容をマクロファイルとして保存して、実行してみてください。

-------------------------------- キリトリセン -------------------------------
#MAXLINES = 14; // 対応する最大行数。2〜14を指定してください。なぜか15は不可。

//────ここから、置換元の正規表現を組み立てる作業────
$regexp = "(ENCODING=QUOTED-PRINTABLE:.*)=\\n(=.*)";
$closeparen = "";
$replacement = "\\g{1}\\g{2}";

#i = 3;
while ( #i<=#MAXLINES )
{
    $regexp = $regexp + "(?:|(?:=\\n(=.*)";
    $closeparen = $closeparen + "))";
    $replacement = $replacement + sprintf("\\g{%d}", #i);
    #i = #i+1;
}
$regexp = $regexp + $closeparen;
//────ここまでで正規表現が完成────


//────デバッグを兼ねて正規表現の内容を表示────
$regexp = input(
    sprintf("下記のパターンを「\\g{1}〜\\g{%d}」に置換します。\n" +
        "よろしければ何もいじらずにOKを押してください。", #MAXLINES), $regexp);
if ( !result ) endmacro;

//────置換────
replaceall $regexp, $replacement, regular;
replaceallfast "(ENCODING=QUOTED-PRINTABLE:)(.*)$", "\\1=?utf-8?q?\\2?=", re
gular;

//────以下、変換モジュールを呼び出す────
selectall; // 全選択

// 秀丸が64bit版の場合は64bit版のモジュールを選択
if ( platform & 0x18000 == 0x80000 )
    $ext = ".hmf64";
else
    $ext = ".hmf";

// 下記は変換モジュールが「マクロファイル用のフォルダ」に入っている場合。
// 実際の環境に合わせて適宜変更してください。
filter macrodir + "\\HmfBase64" + $ext, "Base64Decode";

escape; // 選択解除

//────終了────
endmacro;
-------------------------------- キリトリセン -------------------------------


秀まるおさん(hidesoft.2:35933):
> もしうまくいかなかった所にも対応させるとしたら、具体的にダメな
> 例のサンプルデータを教えていただければ、その辺の正規表現パターンが
> 改良できるかなぁと思います。
...
> =XXの所を適当に伏せ字にして、例えば「=41=41=41」に全部変換した
> 例とかでも提供いただければ、こちらでテストして改良などしてみたいと
> 思います。

そうですね、正規表現の使い方に関しては私よりも秀まるおさんや秀丸担当
さんのほうが格段に腕が立ちますので、あとはmtriverさんと秀まるおさんとの
間でご相談いただければと思います。

> とりあえず、もう今後変換することも無いってことでしたら、
> そのまま放置ということでOKです。

う〜む。最初の
  From: mtriver
  Date: Sat, 29 Jul 2017 17:27:45 +0900
  Subject: hidesoft.2:35925| デコーディング ミス
で投稿された内容はスマホのアドレス帳の中身でしたよね。

だとすると、今後も定期的にPCにバックアップを取って、もう使えない連絡先や、
重複して登録されている情報などの洗い出し作業をするのではと思います。
せっかくの機会なのですから、今のうちに作業手順(とマクロ)を完成させて
しまいませんか?

[ ]
RE:35934 デコーディング ミスNo.35936
でるもんたいいじま さん 17/07/31 20:00
 
でるもんた・いいじまです。念のため補足。

秀まるおさん(hidesoft.2:35933):
> =XXの所を適当に伏せ字にして、例えば「=41=41=41」に全部変換した
> 例とかでも提供いただければ、こちらでテストして改良などしてみたいと
> 思います。

「=41」は半角大文字の「A」を表します。なので、下記の置換
  検索(S):=[0-9A-F]{2}
  置換(E):=41
  「大文字/小文字の区別」OFF、「正規表現」ON、「置換の前に確認」ON
で処理していただければ、意味のある部分がすべて、AAAAA… という
伏せ字になります。

ただし、この置換では、元のデータ中にたとえば「…;ENCODING=BASE64;…」
という部分が仮にあったとすると(たぶんないと思いますが)、そこにも
反応して「…;ENCODING=41SE64;…」に置き換えてしまいます。
(このパターンでは、「=BA」→「=41」という置換が発生しています。)
とはいえ、仮にそうなっても秀まるおさんなら前後の文脈から理解できると
思いますので、ご安心ください。

☆ ☆ ☆

あと、伏せ字にしたあとのファイルはこの掲示板に投稿するのではなく、
秀まるおさんか秀丸担当さんにメールで送付してください。

というのは、サイズが大きい(43kB)というのが1点、もうひとつは、
最初の投稿(hidesoft.2:35925)でも掲示板システムの都合により、
元は1行だったはずのデータの途中に改行が入っていましたので、
正確なデータをお渡しするためというのが2点目です。
そのまま添付ファイルにすれば大丈夫だと思いますが、メーラーの
環境によっては何かあるかもしれませんので、ZIP形式等に圧縮して
添付したほうが安心かもしれません。

秀まるおさんのメールアドレスは、こちらをごらんください。
 ●秀まるおのホームページ(サイトー企画)−サポート
  http://hide.maruo.co.jp/support/index.html
 ●秀まるおのホームページ(サイトー企画)−メールが届かない場合
  http://hide.maruo.co.jp/mailmissing.html

[ ]
RE:35934 デコーディング ミスNo.35937
mtriver さん 17/08/01 12:23
 
mtriver です。

: でるもんた・いいじまです。

色々考察いただき感謝です。

: と提案されていますけれど、けっこうな力技ですねえ^^
: これだけ複雑な正規表現だと、手書きしたものをどこかに保存しておいて
: コピペするのではなく、マクロで自動生成したほうがいいと思います。
:
: …ということで書いてみました。
: 下記の内容をマクロファイルとして保存して、実行してみてください。

時間が取れたのでやってみました。
結果、素晴らしいですね!!!

以下の部分だけが動作しませんでしたので、2か所修正しました。
platform & 0x18000
macrodir

: //────以下、変換モジュールを呼び出す────
: selectall; // 全選択
:
: // 秀丸が64bit版の場合は64bit版のモジュールを選択
: if ( platform & 0x80000 == 0x80000 )
:     $ext = ".hmf64";
: else
:     $ext = ".hmf";
:
: // 下記は変換モジュールが「マクロファイル用のフォルダ」に入っている場合。
: // 実際の環境に合わせて適宜変更してください。
: filter hidemarudir + "\\HmfBase64" + $ext, "Base64Decode";
:
: escape; // 選択解除
:
: //────終了────
: endmacro;


: > とりあえず、もう今後変換することも無いってことでしたら、
: > そのまま放置ということでOKです。
:
: う〜む。最初の
:   From: mtriver
:   Date: Sat, 29 Jul 2017 17:27:45 +0900
:   Subject: hidesoft.2:35925| デコーディング ミス
: で投稿された内容はスマホのアドレス帳の中身でしたよね。
:
: だとすると、今後も定期的にPCにバックアップを取って、もう使えない連絡先や、
: 重複して登録されている情報などの洗い出し作業をするのではと思います。
: せっかくの機会なのですから、今のうちに作業手順(とマクロ)を完成させて
: しまいませんか?

その通りです。
何故必要になったかの顛末は後日時間を見つけて書き込みたいと思います。

細かいことですが、1か所のみ後で修正をしました。
しかし、でるもんた・いいじま氏のマクロでは変換は完全に行われています。
このマクロはこれからも有益に使わせて頂きたいと思います。

1行になるべきところに改行が入っているのみです。

元データ
N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=55=48・・・=BA=BA=
;;;;

[ ]
RE:35937 デコーディング ミスNo.35938
でるもんたいいじま さん 17/08/01 14:06
 
でるもんた・いいじまです。

> : …ということで書いてみました。
> : 下記の内容をマクロファイルとして保存して、実行してみてください。
>
> 時間が取れたのでやってみました。
> 結果、素晴らしいですね!!!

恐れ入ります。

> 以下の部分だけが動作しませんでしたので、2か所修正しました。
> platform & 0x18000
> macrodir

この2箇所で引っかかったということは、秀丸のバージョンが少し古いの
でしょうか?
秀丸に限っての話ですが、バージョンアップは無料ですし、前のバージョン
からの互換性も極力考慮してくれますので、何かの機会に、その時点での
最新版にバージョンアップされることをおすすめします。

本日時点で、「正式版」のV8.73と、「先行開発バージョン」のV8.75β1とが
公開されています。
http://hide.maruo.co.jp/software/hidemaru.html

私自身はいつも最新の先行開発バージョンを入れています。
(が、滅多にないことですが、ごくたまにバグの混入があるので、管理者
 権限をお持ちでないかたは正式版中心のほうがいいかもしれません。)

> 細かいことですが、1か所のみ後で修正をしました。
> しかし、でるもんた・いいじま氏のマクロでは変換は完全に行われています。
> このマクロはこれからも有益に使わせて頂きたいと思います。
>
> 1行になるべきところに改行が入っているのみです。
>
> 元データ
> N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=55=48・・・=BA=BA=
> ;;;;

なるほど。
これに対応するには、正規表現自体を見直す必要がありそうです。
私のマクロ(で使っている秀まるおさんの正規表現)は、「=」で改行
したらその直後の行頭にも「=」がある、という前提で書いてあります。

[ ]
RE:35938 デコーディング ミスNo.35939
でるもんたいいじま さん 17/08/01 14:15
 
でるもんた・いいじまです。

>> 以下の部分だけが動作しませんでしたので、2か所修正しました。
>> platform & 0x18000
>> macrodir
>
> この2箇所で引っかかったということは、秀丸のバージョンが少し古いの
> でしょうか?

すみません、私のほうでもミスをしていました。

まず前者ですが、
> // 秀丸が64bit版の場合は64bit版のモジュールを選択
> if ( platform & 0x18000 == 0x80000 )
>     $ext = ".hmf64";
> else
>     $ext = ".hmf";
という文脈で、& の右側に書くべき値のゼロの数を間違えておりました。
正しくは、
if ( platform & 0x180000 == 0x80000 )
です。「0x18」のあとにゼロが4個つくのが正しい値です。

後者については、
> filter macrodir + "\\HmfBase64" + $ext, "Base64Decode";
と書いていまして、引数にはHmfBase64.hmf(またはHmfBase64.hmf64)が
実際にインストールされているパスを指定する必要がありますので、
たとえば c:\Program Files\Hidemaru に入れているのであれば
macrodir の代わりに hidemarudir としてください。
それ以外の場所であれば、それに合わせて適宜変更してください。

[ ]
RE:35939 デコーディング ミスNo.35940
mtriver さん 17/08/01 14:40
 
mtriver です。

: でるもんた・いいじまです。
:
: >> 以下の部分だけが動作しませんでしたので、2か所修正しました。
: >> platform & 0x18000
: >> macrodir
: >
: > この2箇所で引っかかったということは、秀丸のバージョンが少し古いの
: > でしょうか?

全て最新版です。

秀丸エディタ Ver.8.75β1 (x64)
秀丸メール   Ver.6.72β16 (x64)
HmJre.dll    Ver.5.1
Windows 10 Pro (x64) Ver. 10.0.15063.483

: 正しくは、
: if ( platform & 0x180000 == 0x80000 )
: です。「0x18」のあとにゼロが4個つくのが正しい値です。

了解です。

: 実際にインストールされているパスを指定する必要がありますので、
: たとえば c:\Program Files\Hidemaru に入れているのであれば

このような面倒な場所は使っていませんが、

: macrodir の代わりに hidemarudir としてください。
: それ以外の場所であれば、それに合わせて適宜変更してください。

この辺は十分理解しております。

[ ]
RE:35940 デコーディング ミスNo.35941
mtriver さん 17/08/02 17:08
 
mtriver です。

Subject が適当ではなくなりましたが、このスレッドに繋げまとめます。

スマホ(Android)の連絡先をイクスポートしたものを秀丸エディタで開くと文
字化けする。可視化されているが可読出来ないと言う投げかけに対して、

秀丸担当さんより、テキストファイル全体のエンコーディングとしては、
QUOTED-PRINTABLEは扱わないのが通常だと教えられました。

秀まるお2さんより、2つの置換技と変換モジュール(base64デコード)による
提示がありほぼ目標を達成できました。

更に、でるもんた・いいじまさんよりそれを発展させたマクロを作成・提示し
て頂き汎用化できました。

当然といえば当然ですが、どちらによる可読化も全く同じ結果になりました。

2点の手直しをしたと書き込みましたが、1つ目は良く見ると3行目に LF が入
っていて正常でした。1行が長いと 200バイト付近で改行が入るようです。

ADR;X-POSTAL;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;;=31=・・・=
=82・・・=XX=XX=XX=XX=
=83・・・=XX=0A=XX=XX=
=35;;;;

2つ目は以下のように2行目が ";;;;" のみの時でして、これは可読化の目的で
は全く問題ありません。

N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=55=XX・・・BA=
;;;;

以上のように、43kB 程(100人以上)のスマホの連絡先を可読化でき、バック
アップ後の編集などに大いに役立っています。

以下は参考になればと思い、何故可読化が必要になったかを記します。
4台目の PC でもあるので躊躇していましたが世の中の動きに逆らえず、ガラ
ケーからスマホに移行することになってしまいました。
そこで、切り替える前にアドレス帳の移行を準備することにしました。

1.ガラケーのアドレス帳 → SD メモリーにイクスポート

2. PC で秀丸にて vCard 形式の中から 3人分のアドレスを切り出し、以下の
 4つのコーディングファイルを作成しました。

 A. (S-JIS).vcf  B. (UTF-8 BOM有).vcf  C.(UTF-8 BOM無).vcf
 D.(UTF-16 BOM有).vcf
  → この4つのファイルを SD メモリーにコピー

3. スマホ入手 → SD メモリーを装着

4. スマホにて連絡先を SD メモリーよりインポート
 先ず B のファイル → ファイルが違うと言って読み込んでくれない
 次に A のファイル → インポート完了 → しかし文字化けして NG で削除
 次に C のファイル → インポート完了 → 良さげ!!!

5. PC で秀丸にて vCard 形式の中から選別して別の 10人分のアドレスを切
 り出し、秀丸メールに添付してスマホの Gmail 宛先に送信

6. スマホで受信すると、(.vcf)添付ファイルを連絡先に追加するか問うので
 OK とすると成功して、文字化けもなし。

7. 以降人数を多くして、5-6 のステップで追加したり、不要なものをスマホ
 上で削除した。

8. バックアップも含めて、スマホの連絡先を確認しようとイクスポート

9. スマホのアプリ(Quick Edit)で開くと今回と同様の「文字化け」している
 ので、PC に持ってきて秀丸で開くが同じ表示 → このボードに投稿した

何れにしても、スマホで追加・削除をしたり、メールに添付して追加した場合
の細部の確認及びバックアップのチェックには今回のように可読化が必要です。

私の SIM フリー スマホは中華製で、日本製の場合は文字コードが異なるか
もしれません。
文字コードが UTF-8 でない場合にはマクロの修正が必要かもしれません。
その辺のことで気が付かれた方は書き込んで頂ければ有益だと思います。

でるもんた・いいじまさんには今回のマクロをライブラリーに公開して頂けれ
ばと思います。

[ ]