NewsWatcher でまとめて保存したファイルをデコードしたら添付ファイル名がおかしくなることが時々あります。その殆どが添付ファイル名に日本語が使われていた場合です。
ISO 2022-JP B エンコードか ISO 8859-1 Q エンコードの場合は Mac nkf で変換出来ますので Decoder 1.3.7 を使って取り出すことが出来ます。
Mac nkf の設定では「 MIME を解読する」をチェックしてください。
Mac nkf 2.0 のススメ -- 68k Machine でないなら UTF-8 の Support 丈けを取ってみても v2.0 にする価値は十分にあります。
ISO-2022-JP なら上記と同じく変換するだけです。
現状では滅多に遭遇しませんが、Netscape で UU エンコードを選択した場合等は %??
の様な urlencode されている事もあります。
この形式、Macintosh 用の変換出来るツールは大抵 WWW 上の FORM から送信された E-Mail を読むためのもので、巨大なファイルを扱うようには出来ていません。
MacPerl があれば処理できるのですが……。文字コード変換無しなら、たった 2 行です。
#! MacPerl -pi.bak
(/name[:=]/i || /begin /) and s/%([a-fA-F0-9]{2})/pack 'H2', $1/eg;
これで Mac nkf で変換出来ますので Decoder 1.3.7 で取り出せます。
MacPerl 5.2.0r4 で文字コード変換もする場合。
#! MacPerl -pi.bak -MJcode
s/%([a-fA-F0-9]{2})/pack 'H2', $1/eg;
Jcode::convert(\$_, 'sjis', '', 'z')
if /^Subject:/i || /^begin [0-7]{3,4} / || /\b(?:file)?name=/;
Jcode.pm が無い、又は MacPerl 4.1.8 の場合 (Perl4 は忘れてるんで間違ってるかも)。
#! MacPerl -pi.bak
require 'jcode.pl';
s/%([a-fA-F0-9]{2})/pack 'H2', $1/eg;
jcode'convert(*_, 'sjis', '', 'z')
if /^Subject:/i || /^begin [0-7]{3,4} / || /\bfilename=/ || /\bname=/;
Decoder 1.3.7 は稀にファイルが壊れることがあります。
しかし、添付ファイル名に 2 バイト文字が使われていた場合、予め Shift JIS に変換しておけば取り出すことが可能です。
Decoder v2 はあまり具合が好くないです。
Decoder v3 以降はちょっと増しになった様です。
YA-Decoder はファイルが壊れることはあまりありませんが、ドロップしたファイルの最初に出てきたエンコード方式 ( Base64 / UU ) のどちらかしか取り出すことが出来ません (これは、YA-NewsWatcher のヘルパーとして使用することが前提になっている為と思われます)。
エンコード方式が判っていれば、予め保存するファイルを分ける等の対策をすることで、全てのファイルを取り出せます。
YA-Decoder はファイル名のアルファベットを全て小文字に変換してしまう事がありますので、ファイル名に日本語など 2 バイト文字が使用されていた場合、元の文字列に復元出来なくなる事があります。必ずそうなる訳でも無く、どう云った条件の時そうなるのかは良く判りません。
[ ファイル名 .jpg ] が ISO-2022-JP だった場合
[ ファイル名 .jpg ] が Shift_JIS だった場合
uucd が v2.5 になってからデコードされたファイルが "Untitled" になったり、壊れたりしなくなりました。
Mac でまとめて添付ファイルを取り出したい場合は、先ず uucd を使用されることをお薦めします。
但し v2.5 は BinHex デコードに不具合が在って Type 2 エラーで落ちますので、必ず v2.5.1 を使う様に。
画面上で分割されたファイルが認識されていないこともありますが、殆どの場合は特に気にしなくても上手く取り出してくれます。
保存できない場合は添付ファイルが順番に並んでいる事を確認して、右端の [?] をクリックし、ファイルの先頭や終端のアイコンを変更すれば取り出せるでしょう。
uucd はファイル名の記号類 ( [-#&._]
以外全て ) や制御文字 [0x00..0x1F]
を削除してしまいますので、日本語などの 2 バイト文字が使用されていた場合、元のファイル名に復元出来無くなります。
[ ファイル名 .jpg ] が ISO-2022-JP だった場合
[ ファイル名 .jpg ] が Shift_JIS だった場合
uucd はファイルのエンコードも出来ますが、ファイル名に日本語などの 2 バイト文字が含まれていた場合もそのまま Shift_JIS になってしまいますので、送信してはいけません。これは Mpack 1.5 や UULite 3.0.1 でも同様です。
例えば Netscape でファイル名に 2 バイト文字が含まれる場合
Content-Type: image/jpeg; name="月刊矢部美穂 01.jpg" Content-Transfer-Encoding: x-uuencode Content-Disposition: inline; filename="月刊矢部美穂 01.jpg"
は B エンコードされ、更に UU エンコードならファイル名が 16 進 (%..) にエスケープされています。
begin 644 %8C%8E%8A%A7%96%EE%95%94%94%FC%95%E401.jpg
これは Netscape などでは正常に復元され下記のようになります。
Name: 月刊矢部美穂 01.jpg Type: JPEG Image (image/jpeg) Encoding: x-uuencode
しかし、ファイル名部分をエスケープしただけの物は NewsReader は復元してくれないようです。
Name: %8C%8E%8A%A7%96%EE%95%94%94%FC%95%E401.jpg
Type: JPEG Image (image/jpeg)
Encoding: x-uuencode
ファイル名は [-._0-9A-Za-z]
だけに留めると安全でしょう (Space [0x20] も使わない)。
[A]. それはエスケープシーケンスが欠落した ISO-2022-JP の文字列だと思います。小さいファイルなら MailKanjiFixer にドラッグ & ドロップするだけで読めます。
[A]. Mac nkf の割り当てメモリを増やして「困ったときの詳細な設定」で「壊れた JIS (ESC 欠落)と仮定」を選択します。
MIME デコードも選ぶと良いでしょう。但し、先に添附ファイル等は取り出しておかないと……。
MacBinary エンコードしたアプリケーション
CRC32
単に uucd で分割エンコードしたファイル。つまり
BEGIN --------- cut here --------- CUT HERE -------- PART 1/2
END ----------- cut here --------- CUT HERE -------- PART 1/2
等が付いた状態で、news/mail ヘッダー等は含まれない。ファイルを全てドラッグ & ドロップする等してデコードさせる。
先程の uucd で分割エンコードしたファイルを 1 ファイルに連結してからデコードさせてみる。
今度は連結する際に UUzilla を使って "Newsgroups" 等のヘッダーを挿入 (つまり
BEGIN --------- cut here --------- CUT HERE -------- PART 1/2
END ----------- cut here --------- CUT HERE -------- PART 1/2
は削除される)。
Outlook Express 4.5 で E-Mail の添付ファイルとして UU エンコードしたファイルをデコード .
(何故今頃 v4.5 なのか :: v5.* は使い方が解らなかった (;-p) メールボックスの "Compact" も出来ないし)。
Application | Test#1 | Test#2 | Test#3 | Test#4 |
---|---|---|---|---|
Decoder 1.3.7 | OK | OK | OK | OK |
Decoder 2.1.1 | OK | OK | OK | OK |
MACUUCODE 1.05 | NG | NG | NG | OK |
StUU 1.1 | NG | OK | OK | OK |
StuffIt Expander 4.0.2 | OK | OK | NG | NG |
StuffIt Expander 4.5 | OK | OK | OK | NG |
StuffIt Expander 5.1.3 | OK | OK | NG | OK |
StuffIt Expander 5.5 | OK | OK | NG | OK |
StuffIt Expander 6.0.1 | OK | OK | NG | NG |
UUCat 1.1 | (NG) | (NG) | (NG) | |
UULite 3.0.1 | NG | OK | OK | OK |
UUParser 1.72 | NG | NG | NG | NG |
UUTool-FAT 2.4 | NG | NG | NG | OK |
UnUU 2.1US | OK | OK | OK | OK |
YA-Base64 1.2.9 | NG | OK | OK | OK |
YA-Decoder 2.4.1 | NG | OK | OK | OK |
suntar 2.2.2 | NG | NG | NG | OK |
uuUndo 1.0 | NG | OK | OK | OK |
uucd 2.5.1 | OK | OK | OK | OK |
全 OK で Freeware は uucd だけである。
なんだかファイル・タイプを変更するツールというのが F.A.Q のようなので、ここにも書いておくとしよう。
#!/usr/bin/env perl
MacPerl::SetFileInfo('ttxt', 'TEXT', @ARGV);
#!/usr/bin/env python
import MacOS, macostools, sys
if __name__ == '__main__':
for i in sys.argv[1:]:
MacOS.SetCreatorAndType(i, 'ttxt', 'TEXT')
macostools.touched(i)
on open argv
tell application "Finder"
repeat with i in argv
set i's file type to "TEXT"
end repeat
end tell
end open
勿論 Classic 環境用。
#!/usr/bin/env perl
open CAT, "> dogCow.cat" and print CAT while <>;
#!/usr/bin/env python
import sys
open('dogCow.cat', 'w').write(sys.stdin.read())
on open argv
open for access (choose file name) with write permission returning total
repeat with i in argv
open for access i returning part
write (read part) to total
close access part
end repeat
close access total
end open
tell application "Finder"
tell preferences folder's folder "Mpack"
if exists it then delete folders
end tell
end tell
option+command+P+R | PRAM クリア。 |
C | CD-ROM から起動。 |
shift+option+command+delete | 内蔵ハードディスクドライヴを読み込まない。 |
shift | 機能拡張書類を読み込まない。 |
space | 機能拡張マネージャを開く。 |
option+E | 日本語関連機能拡張書類を読み込まない。 |
option+command+Q+T | QuickTime |
command+. | 起動項目を読み込まない。 |
option+command | デスクトップ再構築。 失敗する場合 |
option+command+tab | ディスク消去 / 初期化 |
option | ウィンドウを全て閉じた状態にする。 |
power-->R or S or return or esc | Mouse Cursor 丈けが動かない場合、power キーでダイアログが出てから
|
option+command+esc | アプリケーション強制終了。 実行後再起動必須 |
shift+option+command+power | System 強制終了 (一部機種のみ再起動を選択可)。 |
control+command+power | System 強制再起動。 |
command+↑ | 上位階層へ移動 |
command+↓ | 下位階層へ移動 |
option+command+↑ | ウィンドウを閉じながら上位階層へ移動 |
option+command+↓ | ウィンドウを閉じながら下位階層へ移動 |
tab | ASCII 昇順に選択 |
shift+tab | ASCII 降順に選択 |
← | → | ↓ | ↑ | 項目選択移動 |
shift+command+↑ | デスクトップに移動 |
command+Y | 片付ける、ボリュームのマウント解除。 |
command+→ | 下位階層を表示 |
command+← | 下位階層を閉じる |
option+command+→ | 下位階層を全て表示 |
option+command+← | 下位階層を全て閉じる |
return or enter | デフォルトのボタンをクリックと同じ |
esc or command+. | キャンセル |
command+↑ | 上位階層へ移動 |
command+↓ | 下位階層へ移動 |
command+→ | command+← | ボリューム切り換え |
command+E | ボリュームマウント解除 |
command+D or shift+command+↑ | デスクトップに移動 |
command+power | Finder、アプリケーション等から MacsBug に入る . |
help | ? | ヘルプ。? の後にコマンドを続けるとその内容。 |
esc | Finder の画面を見る |
g | 実行。Finder に戻る。command+G も使える。 |
ea | アプリケーション再起動 |
es | アプリケーション強制終了 (Exit to Shell) |
rb | リブート (起動ボリュームのみマウント解除して再起動) |
rs | リスタート (サーバー以外の全てのボリュームをマウント解除して再起動) |
set mouse [ on | off | now ] | MacsBug で Mouse を使うか否か。Default は ON. |
set menubar [ on | off | now ] | MacsBug で MenuBar を使うか否か。Default は OFF. |
機能拡張マネージャで { Mac OS (Macintosh) Easy Open, File (PC) Exchange } のうちいずれかのコントロールパネルだけを ON にして再起動し、option+command で再構築する。
command+R でオリジナルファイルを探す。
アップルメニューフォルダの中のエイリアスを一旦出して又入れる。
control+shift+U でダイアログの左下にボタンが追加される。
Disk Copy 等を使う
HyperCard を起動すれば治るかも‥‥‥。
先ず、Composer で空のウィンドウを開きます (shift+command+N)。
Page Properties... で Use Custom Colors を設定します (色は好みで)。
Apply these settings to all blank pages をチェックしてから Netscape Communicator を再起動すれば設定したカラーになります。
Preferences... ⇒ Appearance ⇒ Fonts ⇒ MyFonts にある For the Encoding:「Westarn」の Fixed Width Font: の設定に依存します。
Monaco 等の 等幅 フォントに設定します。
Courier 等の等幅フォントで 12 point 等読みやすいサイズに設定します。
control キーを押しているほうが早く出ます。因みにリンク文字列で command+ マウス・クリックは別ウィンドウに開く、option+ マウス・クリックはファイルに保存、option+command+ マウス・クリックはインターネット設定のヘルパー・アプリケーションで開く (例えば mailto: Eudora, ftp: Anarchie 等)。
shift+space or delete | space と同じ。
option も押すと、最初 / 最後のページに移動。
初期設定ファイルのデータ・フォークを書き換えれば Memory Cache も変更できます……云々、と云ふのは嘘でした、済みません。