- 作成者投稿
- 2007年1月12日 12:46 am #3969naya参加者
開いているファイルのサイズをEmEditer本体を開いている
状態で知る術があったら教えてください.たとえば,IE7からEmEditorでソースを表示した際に,
保存しないとHTMLのサイズを知ることはできませんか?2007年1月12日 3:39 am #3970snow参加者「ファイルの」サイズは保存時の文字コードや改行コードで変わりますから、保存前には知りようがないと思います。
2007年1月18日 11:23 pm #3994yunokiメンバーファイル全体を選択して、TextInformationプラグインを実行することで、ファイルサイズが求められると思います。
下記のようなマクロを 拡張子jseeで保存し、実行することでもファイルのサイズがチェックできるようになります。
document.selection.SelectAll();
data=document.selection.Text;
document.selection.Collapse();
alert(data.length);2007年1月19日 12:07 am #3996naya参加者snowさん,yunokiさん,レスありがとうございました.
とりあえず,TextInformationプラグインでの解決が
容易そうですが,マクロもいいですね.併用してよさそうなのを使いたいと思います.
ありがとうございました,2007年1月21日 6:23 pm #4001takuya参加者data.length だと2バイト文字も1文字で数えるんじゃないのかな?なのでサイズじゃなくて文字数が返って来る気がするけど。
間違っていたらゴメンナサイ。
2007年1月21日 10:56 pm #4002yunokiメンバーそれもそうですね。
一応2バイト文字対応版、おいておきますね。
2バイト文字数判定部分については、こちらを参考にしています。
http://www.geocities.co.jp/SiliconValley/4334/unibon/javascript/jslen.html
SJIS以外のコードのカウントはプログラムを修正する必要があります。
ま、プラグイン使えばすむので、この件はここまでにさせてください。document.selection.SelectAll();
data=document.selection.Text;
document.selection.Collapse();
alert(myLen(data));function myLen(s) {
var r = 0;
for (var i = 0; i= 0x0 && c = 0xff61 && c = 0xf8f1 && c < 0xf8f4)) {
r += 1;
} else {
r += 2;
}
}
return r;
}
2007年1月22日 11:03 am #4005匿名ゲスト「何のサイズ」を知りたいのかを、明確にしないと、明確な答えはないと思いますよ。
そもそもEmEditorは内部では、全てUnicodeのはずです。様々な種類のエンコードのファイル
↓
Unicodeへマッピングして、EmEditorメモリ上に保持。
↓
保存時指定(通常は開いた時の自動判定エンコード)のエンコードで保存。と言う流れですから、document.selection オブジェクトに対して操作しても、それは
Unicodeのサイズになってしまいます。
2byte文字とかの概念すらなく、一文字は全て固定サイズ(Unicode良く分かってないの
で、厳密には違うかもしれないですけど)になると思いますよ。
Ctrl+I で見る限り、16進数4桁なので内部は1文字 2byte なのかなと思いますけど、
そうすると、alert( document.selection.Text.length * 2 );
で求められるような気もします。また、一文字「あ」だけのUTF-8ファイル を、想定しても、Bomがある時とない時、「ファ
イルのサイズ」は変わりまし、UTF-8では、保存すると「あ」は3バイトですし。結局、Snowさんの言うとおり、保存してみるまで分からないという事です。
ですから、マクロで、改行コード、エンコード指定して一時ファイルとして別名保存
して、マクロのActiveXでファイルのサイズを取得するとかしないと、保存した時のサイズはどうしようもないはずです。perl だったら、外部ツールで「ファイルを保存するをオン」にして
以下のコマンド実行でバイト数出せると思いますけど。cmd /k perl -e “print -s ‘$(Path)’;”
2007年1月22日 11:17 am #4006yunokiメンバー>
perlerさんは書きました:
と言う流れですから、document.selection オブジェクトに対して操作しても、それは
Unicodeのサイズになってしまいます。SJISでファイルを作成し、前述したマクロで動作確認をしましたが、Unicode単位でのカウントにはならず、実際に保存されたときのファイルサイズと一致しましたけど、それとは別の話でしょうか?
2007年1月22日 12:06 pm #4007匿名ゲストあぁ、そうなんですか。
sjisで保存すると、バイト志向動作になるんですね、、。
いつもUnicodeで保存していたので、EmEditorは文字単位志向なんだと思い込んでいました。
保存エンコードで動作が変わるなどとは全く知らなかったです。
ちょっと目から鱗です。私が間違っていましたので、どうもすいません。
ただ、コードが間違っていると指摘したのではなくて、
何のサイズを求めたいのか(エンコードなど)はっきりさせないと、
サイズを求めるのはほとんど無理と言うことを言いたかっただけですので、悪く思わないでください。それから、外部ツールの例は良く考えたら、全く意味がないので無視してください。
保存したら本体でステータスバーにサイズでますよね。2007年1月22日 1:22 pm #4010匿名ゲストああ、なんか的外れな事言ってますね。すいません。
つまりですね、私が言ったことは、yunoki さんのそのコードそのもののことですよ。
そのコードがやっていることは正しくて、EmEdtor上ではUnicodeなので、保存後のエンコ
ードが分からないと、サイズは出せないですよねって事だけです。
どのエンコードか、Bomはつけるのか、改行コードは何か、などがきまれば、そのような
コードで対応するエンコードとのバイト数対応表で一旦保存することなく出せると言うこ
とです。ただ事実上、エンコード一杯ありすぎて、マクロで記述するのは現実的じゃないので、一
旦保存してサイズ取得するほうがいいとは思いますが^^;どうも私、返信する場所を間違えたようで、yunokiさんのコードに対するレスポンスのよ
うに受け取られたようですが、そのコードに対して返事したわけじゃないんです^^;
フラット表示なので、だーと上から下まで読んで、思ったことを一番下にあった返事ボタ
ンで返事しちゃったので、すいません。話は変わりますが、ファイルを保存した時は、ステータスバーにサイズが出るのに、
ファイルを開いた時には出ないのは、何か理由があるんですかね?
ファイルを開いた時に、ファイルサイズが出れば、nayaさんの悩みの半分くらいは解決す
るような。# このフォーラム戻るが利かないようで、書きかけの内容が全部パーになっちゃうんですけど、仕様なんですかね。
もう10回以上は、投稿失敗でふいにしてます、、、
外部エディタEmEditorにしてますけど、ついついフォームのほうに書いちゃうこともあるので。:-(2007年1月22日 3:34 pm #4012naya参加者perler さん,いろいろなアドバイスや情報ありがとうございました.
元質問に書いたように,
たとえば,ブラウザから表示したソースを保存せずとも
どれくらいのサイズなのかを知れたらいいという場面が
ありまして,当面はyunokiさんにご教示いただいた
TextInfomationプラグインで解決することにしました.「保存した時は、ステータスバーにサイズが出るのに、
ファイルを開いた時には出ない」
→これは確かに,開いたときに出れば本件に関しては
解決する話だと思います.2007年1月22日 6:47 pm #4013匿名ゲストいえ、どうもこちらこそすいません。
このフォーラムの仕組みがまだいまいち良く分かってないのと、
文章簡潔にまとめるのが下手なもので、話が妙な方向にいってしまって。
結局、皆さんが言っていることを、自分なりの解釈でまとめただけだったのですが^^;TextInfomation 以前使ってた記憶ありますけど、v6入れなおして
から使ってないので不明確ですが、何種類かのエンコードのバイト数は表示していたかも
しれませんね。少なくともUTF-8はあったような。数は少ないでしょうけど、ソースの表示で開いたファイルのエンコードが、ISO-2022だっ
たとします。その場合に、「開いているファイルのバイト数をしりたい」が(改行コード
は混在を保持するとして)、ISO-2022で保存した場合に何バイトになるのか知りたいのか、
どんなエンコードでもオーソドックスにShift-Jisのバイト数が分かれば良いのか、それ
ともメモリ上のUnicodeとしてのバイト数が分かれば良いのかって事だと思います。yunokiさんのマクロみたいな方法もあるのですが、ISO-2022とかだと、相当難しいと思い
ます。ISO-2022の場合、日本語と英字などの区切りで文字とは無関係の制御文字の挿入が
あり、どこからどこまでは日本語で、どこからどこまでが英字だと言う仕組みだったはず
です。そうすると、次の文字などをみて色々判断しなくてはならなくなります。
例えば、以下の二つの文字列は、Shift_jisだと同バイト数ですが、ISO-2022だとバイト
数が異なります。aあaい 18byte
aあいa 12byte2007年1月22日 6:50 pm #4014匿名ゲスト>「保存した時は、ステータスバーにサイズが出るのに、
>ファイルを開いた時には出ない」すいません、今確認したら、ちゃんとバイト数出てます。
タブ切り替えて戻ったら消えてしまうのと、たまたまマウスがURLに重なっていたりしてURLを表示されて、出ないと思っちゃったみたいです。
:-o2007年1月23日 12:00 am #4015naya参加者>今確認したら、ちゃんとバイト数出てます。
本当ですね,今まで気づきませんでした.
今後は開いた瞬間に確認することとします.
ありがとうございました.
2007年1月23日 10:58 am #4028takuya参加者最初、バイト数表示されていても、ステータスバーが書き換わっちゃうと、バイト数表示に戻らないことが原因だったのですね。これって再現可能なので不具合報告にあげた方が良いのじゃないでしょうか?
2007年1月23日 11:10 am #4029naya参加者通常,IE7のソース表示をすると,ステータスバーの表示が
32.4KB (33,258 バイト), 527行
のようになりますが,エクスプローラプラグインをONの状態だと
種類: システムフォルダ 更新日時:1601/01/01 9:00 サイズ:0バイト
のようにサイズが取得できません.仕様なら了解ですが,何か動作が異なるので
念のためご報告まで.2007年1月23日 5:54 pm #4038Yutaka EmuraキーマスターExplorer プラグインでは、選択されているファイルの種類、更新日などを表示するほうが優先されてしまうので、こうなってしまいますね。Explorer プラグインの中でファイルをキーボードで選択して Enter を押して開けば、サイズと行数が表示されます。将来的には、どちらを優先するかを選択できるようにしたいと思います。
2007年1月25日 9:06 pm #4052匿名ゲスト>最初、バイト数表示されていても、ステータスバーが書き換わっちゃうと、バイト数表示に戻らないことが原因だったのですね。これって再現可能なので不具合報告にあげた方が良いのじゃないでしょうか?
これは不具合と言うよりは、仕様なんだと思います。
マクロでみるとWindow.status なので、ドキュメントごとではなく、ウィンドウにひとつなんですよ。
おそらくパフォーマンス的なことでそうしてるんだと思います。
document.status みたいなのがあると良いかなと思いますけど、
それはそれで大変なんでしょうね。
マクロ書くほうも結構管理が大変かもしれないし、Widnow.statusのほうが便利なこともありそうですしね。2007年1月25日 9:09 pm #4053匿名ゲストすいません、また返信場所間違えてしまいました、、、。
以後気をつけます、、、。 - 作成者投稿
- このトピックに返信するにはログインしてください。