文字コードの変更No.10619
ZERRY さん 01/12/06 19:56
 
現在、IEでソース表示をHidemaruを指定していますが、
自動的に文字コードを正しく認識できない場合があります。
そこで、OutLookなどのように、表示後に文字コードを変換する
方法は、あるのでしょうか?

[ ]
RE:10619 文字コードの変更No.10622
ひろ さん 01/12/06 21:52
 
 ZERRY さん今日は、ひろです。
> 現在、IEでソース表示をHidemaruを指定していますが、
> 自動的に文字コードを正しく認識できない場合があります。
 完全に正しく自動認識するのは不可能ですが、秀丸が対応している文字コー
ドならば、「動作環境」→「編集」の「文字コードの自動認識をする」を ON
にしておくと、誤認識が減ると思います。

> 表示後に文字コードを変換する
> 方法
 「コマンド一覧」→「ファイル系」→「ファイルを閉じて開く」でもでき
ます。ファイルを再度選ぶのが面倒なら、末尾のマクロを試してください。
//文字 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" +
      "複数の文字コード混在すると、復旧できなくなる恐れがあるので、" +
      "マクロを終了します。";
    goto ending;
  }call save_search;
  ##org_line=lineno;
  ##org_column=column;
  ##handle = hidemaruhandle(0);
  $$option = "/(" + str(windowposx) + "," + str(windowposy) + ","
    + str(windowcx) + "," + str(windowcy) + ") ";
  $$filename = filename2;
  openfile $$option;
  closehidemaru ##handle;
  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;
  goto ending;

save_search:
  $search=searchbuffer;
  #search=searchoption;
  return;

check_charset:
  ##charset=(charset&63);
  if(##charset==2){
    message "文字化けしている理由が不明(;_;)";
    goto ending;
  }else if(##charset==4){
    ##return_code=(charset&192)/64;
    if(##return_code==1)return 1;
    else return 3;
  }else return ##charset;

ending:
  setsearch $search, #search;
  endmacro;

select:// escape sequence を探す
  beginsel;
  ##num=0;
  while(##num<30){
    down;
    if(!result){
      gofileend;
      ##num=30;
    }else ##num=##num+1;
  }return;

[ ]
RE:10619 文字コードの変更No.10623
でるもんた さん 01/12/06 22:03
 
> そこで、OutLookなどのように、表示後に文字コードを変換する
> 方法は、あるのでしょうか?

下記のマクロでいかがでしょうか。

#c = inputchar("文字コードは?(Sjis/Euc-jp/Junet/euc-Kr/Unicode)");
if(#c==27)
return;
else if(strstr("sejuk",char(#c|0x20))>=0)
{
$c = char(#c|0x20);
if ($c=="k") $c = "s";

$filename = filename;
changename "nul";
#hwndOld = hidemaruhandle(0);

openfile "/f" + $c + " " + $filename;

#hwndNew = hidemaruhandle(0);
if(#hwndOld==#hwndNew)
changename $filename;
else
{
closehidemaruforced #hwndOld;
if (#c == ascii("k"))
config "fGulimChe";
}
}
else
{
message "Invalid Character : ["+code($type)+"]";
goto Reload_file;
}

========================================================================
飯嶋 浩光 / でるもんた             http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta           mailto:xxxxxxxx@ht.sakura.ne.jp
                                         mailto:xxxxxxxx@pop01.odn.ne.jp

[ ]
RE:10623 文字コードの変更No.10624
ZERRY さん 01/12/06 22:29
 
こんばんわ。ZERRYです。
ひろさん、でるもんたさんありがとうございます。

ひろさんの、自動認識ONで認識できるようになりました。
半角カタカナの弊害はいまのところ出ていないのでばっちりでした。
でるもんたさんのマクロも十分に対応できました。
ありがとうございました。


>{
>message "Invalid Character : ["+code($type)+"]";
>goto Reload_file;
>}
>
ただ、この部分でエラーが出ているようです。
どうしたらよいでしょうか?


[ ]
RE:10624 文字コードの変更No.10645
でるもんた さん 01/12/07 22:26
 
> でるもんたさんのマクロも十分に対応できました。
> ありがとうございました。
>
>
> >{
> >message "Invalid Character : ["+code($type)+"]";
> >goto Reload_file;
> >}
> >
> ただ、この部分でエラーが出ているようです。
> どうしたらよいでしょうか?

すいません。実は、自作の長いマクロ集から一部分だけを書き抜いてきたので、
この部分をノーチェックのまま投稿してしまいました。

解決策ですが、このマクロの冒頭に 1 行、「Reload_file:」と書いてください。
不要だと思ってこの行は省いたんですが、よく見たら必要だった…

[ ]
RE:10645 文字コードの変更No.10696
ZERRY さん 01/12/10 18:30
 
>解決策ですが、このマクロの冒頭に 1 行、「Reload_file:」と書いてください。
>不要だと思ってこの行は省いたんですが、よく見たら必要だった…

できました。ありがとうございました。

[ ]