openfileでの文字コード指定No.05691
tatuto さん 00/05/08 00:19
 
tatutoです
Javaの日本語版ドキュメントをDLしたのですが
HTMLファイルドキュメントの為リンクのURLの記述ミスが多く
修正してるところなのですが
文字コードがJISで文字化けが起こるため
openfile "*.html",jis;
saveas filename2,sjis;
exit;
としているのですが
いざマクロを実行してみると
,jisが機能していないような気がしたので

openfile "*.html",jis;
// saveas filename2,sjis;
// exit;
として実行してみると
やはり,jisが機能していませんでした
何か良い方法はないでしょうか?

[ ]
RE:05691 openfileでの文字コード指定No.05692
ENCODINGSHIFTJIS さん 00/05/08 10:45
 
>やはり,jisが機能していませんでした
>何か良い方法はないでしょうか?

 NN4.7 で元のページを開き、
Ctrl+U ソースの表示、Ctrl+S ファイルに保存
を行う。

jisの場合でも 英数の符号系が  US ASCII の場合と
日本語ローマ字の場合があり ESCシフトの並びが違います。
秀丸は両対応か?

http://hp.vector.co.jp/authors/VA001240/article/charcode.html#chap3
より
JISコードで使用される指示のシーケンスは以下のようになります。

      シーケンス               内容
      ESC ( B   G0にASCIIを指示する
      ESC ( J   G0にJIS X 0201ローマ文字を指示する
      ESC $ @   G0にJIS C 6226-1978を指示する
      ESC $ B   G0にJIS X 0208-1983を指示する

ESC ( BとESC ( Jの違いは旧JISと新JISの違いだとする説がありますが、 それは間
違いです。 また、ESC ( Hを使うのも間違いです。

__END__



[ ]
RE:05692 openfileでの文字コード指定No.05694
でるもんた さん 00/05/08 11:46
 
細かい補足を。

> jisの場合でも 英数の符号系が  US ASCII の場合と
> 日本語ローマ字の場合があり ESCシフトの並びが違います。

要するに、半角の \ が ¥ か \ か、という違いですね。
(あとは ~ かな?)

> 秀丸は両対応か?

というより、秀丸は US ASCII と JIS ROMAN を区別していません。

>       シーケンス               内容
>       ESC ( B   G0にASCIIを指示する
>       ESC ( J   G0にJIS X 0201ローマ文字を指示する
>       ESC $ @   G0にJIS C 6226-1978を指示する
>       ESC $ B   G0にJIS X 0208-1983を指示する
>
> ESC ( BとESC ( Jの違いは旧JISと新JISの違いだとする説がありますが、
> それは間違いです。

新旧 JIS の区別は要するに ESC $ @ と ESC $ B の違いなのですが、
「ESC ( J + ESC $ @」または「ESC ( B + ESC $ B」の組み合わせで
使われることが多かったために、「ESC $ @ を使う場合は ESC ( J と、
ESC $ B を使う場合は ESC ( B とペアで」という誤解が生じたの
でしょうね。

[ ]
RE:05691 openfileでの文字コード指定No.05695
ENCODINGSHIFTJIS さん 00/05/08 14:25
 
>openfile "*.html",jis;
>,jisが機能していないような気がしたので
>
前のは勘違いしてました、* 付きの指定ですから
ダイアログボックスが出て、そこでは マクロ指定の jis が
ダイアログの 文字コード コンボbox には引き継がれていない
という事ですね。

組み込みのダイアログの細かい設定をマクロからコントロールするのは?

ファイル名取得のダイアログを自前で出して、そのファイル名で
 openfile filenemex,jis;  するしかないのでは?

[ ]
RE:05695 openfileでの文字コード指定No.05696
ENCODINGSHIFTJIS さん 00/05/08 16:45
 
// openjis.mac
// 先に開いておく 化けた形で
openfile "*.html"; // ドラッグ&ドロップ用に固定でもいい
$filename=filename; changename  "";    // 同名で開くと
openfile $filename,jis;               // jis  指定 で再読み込み
saveas "c:\\Windows\\temp\\newfile",sjis;
quit

// openfile の連続が気になるが

[ ]
RE:05695 openfileでの文字コード指定No.05699
秀丸担当 さん 00/05/08 17:17
 
>ファイル名取得のダイアログを自前で出して、そのファイル名で
> openfile filenemex,jis;  するしかないのでは?

とりあえず現状ではワイルドカード+文字コードに対応していない
ので opnefile で直接ファイル名を指定するしかありません。
対応できるように検討しておきます。

[ ]
RE:05691 openfileでの文字コード指定No.05700
番頭++ さん 00/05/08 17:25
 
openfile "/h " + $wk2 + "\\" + $wk1, jis;
この jis って、ほんとの「コード決め打ち」で開くのではなく、
「秀丸エディタ」の自動判定が優先していませんか !!!

開く前のコードはマクロでは判らないような記憶があります。
何が仕様なのでしょうね !!! それともバグ ???

こんなマクロを作成して見ました、参考になれば ...
「秀丸エディタ」の窓を少なくして実行してみて下さい !!!

//*1    a1.mac
    if( updated ){  endmacroall;    }   //  debug. 1
    grep ".|\\n", "*.html", directory2, filelist, regular;  //  icon,
    if( code == eof ){  quit;   }
    replaceall "\\([0-9]+\\)$", "", regular;
    $wk2 = directory2;
    gofiletop;
    while( code != eof ){
        beginsel;   golineend2;
        $wk1 = gettext(seltopx,seltopy,selendx,selendy);    escape;
        question "このファイルを JIS ==> SJIS に変換しますか ??? \n\n" + $wk
2 + "\\" + $wk1;
        #result = result;
        if( iskeydown( 0x1B ) ){    //  [Esc]   で終了する。
            escape; endmacroall;
        }
        if( #result ){
            openfile "/h " + $wk2 + "\\" + $wk1, jis;
            if( ! result ){
                message "openfile failed !!! \n\n" + $wk2 + "\\" + $wk1;
                endmacro;
            }
            $wk1 = filename2;   #i = charset & 0x3F ;
            if( #i == 04 ){ //  JIS ??? <== 無意味 !!!
                saveas $wk1, sjis;
                if( ! result ){
                    message "saveas failed !!! \n\n" + $wk1;
                    endmacro;
                }
            }
            setactivehidemaru 1;
            closehidemaruforced hidemaruhandle(findhidemaru($wk1));
            //  closehidemaruforced の機嫌が悪いとこのマクロは動きません !!!
            if( #i == 04 ){
                title "saved ! - " + $wk1;
                right;
            } else {
                golinetop2; deleteline;
            }
        } else {
            golinetop2; deleteline;
        }
    }
    gofiletop;  title 0;
    setsearch "", 0x00; //  reset. 記憶にありません !
endmacro;


[ ]
RE:05700 openfileでの文字コード指定No.05701
番頭++ さん 00/05/08 18:53
 
[動作環境] - [編集] の
[ EUC コードと JIS コードの自動認識をする] を指定して、

openfile "/h " + $wk2 + "\\" + $wk1, jis;

の行を、

openfile "/h " + $wk2 + "\\" + $wk1;

とすると安定したマクロになると思います。


[ ]
RE:05691 openfileでの文字コード指定No.05702
ひろ さん 00/05/08 19:15
 
 tatuto さん今日は、ひろです。
> openfile "*.html",jis;
 wild card を使用したときの openfile では dialog を開く使用のため、
文字 code の指定は意味がなくなるのだと思います。

 誤認識の可能性は残りますが、「その他」→「動作環境」→「編集」で
「EUCコードとJISコードの自動認識をする」を ON にして macro を実行する
のが一番手っ取り早いと思います。

 文字 code を明示的に指定したいならば、
//--------------- jis2sjis.mac --------------------------------------
openfile "*.html";
if(!result)endmacro;
$file=filename2;
#hanle=hidemaruhandle(0);
newfile;
closehidemaru #hanle;
openfile $file,jis;
saveas filename2,sjis;
exit;
//---------------------------------------------------------------------
で良いです。

 ただ単純な文字 code 変換なら、nkf 等の filter を使った方が早いと思
います。

[ ]
RE:05702 openfileでの文字コード指定No.05714
tatuto さん 00/05/10 00:37
 
tatutoです
早速のレスありがとうございました。

ひろさんのhidesoft.2:05702| RE 05691 openfileでの文字コード指定.から適座引用
してます
> tatuto さん今日は、ひろです。
> 誤認識の可能性は残りますが、「その他」→「動作環境」→「編集」で
>「EUCコードとJISコードの自動認識をする」を ON にして macro を実行する
>のが一番手っ取り早いと思います。
>
> 文字 code を明示的に指定したいならば、
>//--------------- jis2sjis.mac --------------------------------------
>openfile "*.html";
>if(!result)endmacro;
>$file=filename2;
>#hanle=hidemaruhandle(0);
>newfile;
>closehidemaru #hanle;
>openfile $file,jis;
>saveas filename2,sjis;
>exit;
>//---------------------------------------------------------------------
>で良いです。

これを使わせて頂きます。

PS 番頭++さん>
私には高度すぎて、ちょっとわからない部分がありました。
もっと秀丸マクロを勉強して、早く理解出来るようになりたいと思います。
レスありがとうございました。
####################################################
e-mailto:xxxxxx@mx1.tiki.ne.jp

[ ]