HTML特殊文字変換No.09116
hayataro8 さん 19/12/01 09:28
 
秀丸で「テキストに含まれるHTML特殊文字をコードに変換」することは可能でしょう
か?

下記サイトに、アクセスして頂き、
https://tech-unlimited.com/escape.html

例えば、
血球貪食症候群
これを【通常テキストに変換】すると、

血球貪食症候群

と変換されます。

標準機能、もしくは、マクロ機能でこのサイトと同じ事ができますでしょうか???

可能であれば、フォルダ内のファイルの一括変換を希望しております。

何卒よろしくお願い申し上げます。

[ ]
RE:09116 HTML特殊文字変換No.09117
IKKI さん 19/12/01 10:48
 
hayataro8さん、おはようございます。ユーザーのIKKIです。

>可能であれば、フォルダ内のファイルの一括変換を希望しております。
この作業を秀丸だけで行うのは非常に時間がかかるので、NKFというソフトを使うこ
とをおすすめします。
以下の手順で、秀丸からNKFを呼び出してご希望の作業を行うことができます。


[手順1] 以下のマクロを deref.mac としてマクロフォルダに保存する。
//----------ここから----------
$command = "\"" + currentmacrodirectory + "\\nkf32.exe\" -x --numchar-input
-w --in-place > nul";
#st = tickcount;
// run $command + " \"" + filename2 + "\""; // 現在のファイルを変換
run $command + " *.html"; // フォルダ内すべてのHTMLファイルを変換
message str(tickcount - #st) + " ミリ秒で処理しました";
//----------ここまで----------

[手順2] ベクターから nkf をダウンロードする。
http://www.vector.co.jp/soft/win95/util/se295331.html

[手順3] ダウンロードした書庫の中から nkf32.exe を探し出し、deref.mac と同じ
フォルダにコピーする。

[手順4] 変換したいファイル群を1つのフォルダ内に置く。
※すべてのファイルの拡張子が .html であること。そうでない場合、deref.mac の4
行目を適宜修正する。

[手順5] 当該フォルダ内の任意のファイルを秀丸エディタで開く。

[手順6] deref.mac をマクロ実行する。
※フォルダ内の全ファイルがいきなり上書きされます。元に戻せません。


手元の環境で試したところ、数値文字参照(「血」の形)だけで書かれた約1M
Bのテキストファイル100個を約9秒で処理できました。

[ ]
RE:09117 HTML特殊文字変換No.09118
hayataro8 さん 19/12/02 10:57
 
IKKI様、年末のお忙しいときに、早急に親切丁寧な長文のご返信を賜り、誠にありが
とうございました!!!

御指示頂いたとおりに、一括変換を頑張ってやってみます!!!

外部プログラムを使用して、マクロで変換するとは、考えもしませんでした!!!

自分と同じ悩みを抱えた人が、他にも沢山居ると思います。

他の方々も含め、心より御礼申し上げます。

有り難うございました!!!m(_ _)m

[ ]
RE:09118 HTML特殊文字変換No.09119
秀丸担当 さん 19/12/02 14:41
 

数値文字参照を使う必要があるようなページは、日本においてはmetaタグでcharset
の指定がShift_JIS(またはShift-JISとかx-sjisとか)であることが多いと思います。
(この会議室もShift-JISだったり、vectorもShift-JISだったり)

もしShift-JISの資産をUTF-8に移行しようとする場合、UTF-8に変換してのファイル
保存と、metaタグの書き換えは同時に行う必要があります。
metaタグのcharsetでShift-JISを書いているような行があったら、注意が必要です。
metaタグのcharsetが無ければそのままでもいいです。
metaタグのShift-JISを残したまま、ファイルをUTF-8で保存すると、秀丸エディタや
ブラウザでの読み込みは文字化けすることになってしまいます。

下記に他の変換方法やmetaタグの直し方を書いておきます。
変換するときは、何があってもいいように変換前のファイルをバックアップしておく
ことをお勧めします。

●既に数値文字参照とutf-8への変換が済んでいて、metaタグのcharsetだけを直す場合

秀丸エディタの「grepして置換...」でmetaタグのcharsetをutf-8に書き換える方法
があります。
[検索]→[grepして置換...]で、以下のようにします。

検索する文字列:「<meta.+?charset=.+?>」
置換する文字列:「<meta charset="utf-8">」
検索するファイル:「*.html」(または*.htmかも)
検索するフォルダ:htmlがある場所
「大文字/小文字の区別」はOFF
「正規表現」はON
エンコードの種類:「Unicode(UTF-8)」

これで実行するとまとめて書き換えられ、秀丸エディタやブラウザの読み込みで文字
化けすることが無くなります。


●まだ変換していない場合で、秀丸エディタを使って変換する場合

秀丸エディタでhtmlファイルを開いている状態で変換するマクロの例です。
変換するだけで保存はしないので上書き保存する必要があります。
フォルダ内のファイルを全部するというところまでは作りこんでないです。
「<」とか「&」とかはhtmlタグ等に誤認識されるのを防ぐため、念のためASCII文字
の範囲は変換されないようにしています。
(実際この会議室のhtmlソースは「<」は「&lt;」じゃなくて「&#60;」になっている)

setcompatiblemode 0x20200;
disabledraw;

//今開いているファイルのエンコードの種類をutf-8に変換
setencode 6/*UTF-8*/,1;

//metaタグ書き換え
replaceall "<meta.+?charset=.+?>","<meta charset=\"utf-8\">",regular,nocases
ense;

//数値文字参照を文字に置き換え
gofiletop;
while(1){
    searchdown2 "&#x[0-9a-fA-F]+;|&#[0-9]+;",regular;
    if(result==false){
        break;
    }
    $a=gettext2(seltopcolumn,seltoplineno,selendcolumn,selendlineno,1);
    #c=strlen($a);
    if(leftstr($a,3)=="&#x"){
        #a=val("0x"+midstr($a,3,#c-4));
    } else {
        #a=val(midstr($a,2,#c-3));
    }
    if(#a<0x80){ //ASCII文字はやめておく
        right;
        continue;
    }
    insert unichar(#a);
}

endmacro;


●まだ変換していない場合で、他のソフトで一括変換
Googleで「meta shift_jis utf-8一括 変換」とかで検索するとそれ専用のソフトが
あるみたいなので、そっちほうが手っ取り早いかもしれないです。
(でもある1つを試してみたらmetaタグはそのままでした)

[ ]