ファイルを開く時以外に、文字コードを切No.03181
おおさか さん 99/05/08 12:42
 

仕事がら、EUCやJISなどS-JIS以外のテキストを扱うことが多いのですが、
秀丸はファイルを開くときにしか、文字コードを指定できないのでしょうか?

うっかり、EUCのファイルを自動判別で開いてしまい、文字化けを起こした時
もう一度、開きなおすという手間がめんどうです。

InternetExplorerやNetscapeNavigatorのような、メニューから文字コード
を選べると便利なのですが...

[ ]
RE:03181 ファイルを開く時以外に、文字No.03185
ひろ さん 99/05/08 18:57
 
 おおさかさん今日は、ひろです。
> 仕事がら、EUCやJISなどS-JIS以外のテキストを扱うことが多いのですが、
> 秀丸はファイルを開くときにしか、文字コードを指定できないのでしょうか?
 macro で開いている file の文字 code を変更する物があります。
http://win.blue.co.jp/~jr-kun/hm_macro.html#CHARCHNG を御覧下さい。ま
たそれほど厳密でなくても良いならば、
// 表示文字 code 変更 macro
main:
  disabledraw;
  if(!selecting)call select;
  searchdown "\x1B",inselect;
  if(result)##charset=4;
  else{
    call check_charset;
    ##charset=##return;
  }if(updated==1){
    message "更新されています。\n"
            +"複数の文字 code が混在すると、復旧できなくなる恐れがある"
            +"ので macro を終了します。";
    call ending;
  }call save_search;
  ##org_line=lineno;
  ##org_column=column;
  $$filename=filename2;
  newfile;
  closehidemaru findhidemaru($$filename);
  if(##charset==1) openfile $$filename,euc;
  else if(##charset==3) openfile $$filename,sjis;
  else if(##charset==4) openfile $$filename,jis;
  movetolineno ##org_column,##org_line;
  call ending;

save_search://*******検索状態を文字
  $search=searchbuffer;
  #search=searchoption;
  return;

reset_search://******検索を初期状態に戻す
  setsearch $search, #search;
  return;

check_charset://表示文字 code を調べる
  ##charset=(charset&63);
  if(##charset==2){
    message "何故文字化けしているか解りません(;_;)";
    call ending;
  }else if(##charset==4){
    ##return_code=(charset&192)/64;
    if(##return_code==1)return 1;
    else return 3;
  }else return ##charset;

ending:
  call reset_search;
  endmacro;

select:// escape sequence を探す範囲を設定する。
  beginsel;
  ##num=0;
  while(##num<30){
    down;
    if(!result){
      gofileend;
      ##num=30;
    }else ##num=##num+1;
  }return;
//---------------- end macro -----------------------------------------
で文字 code の自動切り替えをします。

[ ]