BASE64って何のことですか?

[上に] [前に] [次に]
kanako 1999/03/09(火) 09:44:17
友人がHPをはじめて作るそうで、使ってほしい画像をメールで
添付したんですが、彼女もまだまだわからなく画像が文字化け
してしまうそうです。
私はMACのフォトショップの画像をJPEGにして圧縮せず送りました。
(インターネットはナビゲーター)
彼女はウィンドウズで趣味でやっている程度です。
ナビゲーターでよく「ファイル→ナビゲーターで開く」をすると
画像が見れますよね。
でも、彼女は「BASE64でJPEGで送って」と言います。
BASE64って何ですか?そして、MAC・ウィンドウズとOSが違っても
何の問題もなく見れる方法は?(何回か圧縮ファイルが開かず見れ
なかった・・・)という事も・・・

初歩的な質問とは思います。が、しかし周囲に聞ける人がいないので
皆さん、こんな私にアドバイスを・・・

ジムシー [E-Mail] 1999/03/09(火) 11:05:21
BASE64とはInternetメール等で,バイナリデータを送信する為の
エンコード方式の一つで、メールの世界では結構利用されています。
(基本的に機種依存(EUC,jis,s-jis)することなく送れるはずです。)
Kanakoさんが利用しているメールソフトでも、添付ファイルを設定する
時に「エンコード形式」の指定が有ると思いますので、
そこでBASE64を指定すれば自動的にエンコードされ送付出来ます。
ちなみにBASE64では、データを6bit単位で分解し、
(つまり2の6乗=64通りの数とみなす)
その値を「アルファベットの全角、半角文字」,「半角の数字」と「+」,「/」の64文字対応させてエンコードします。



匿名希望 1999/03/09(火) 22:23:16
kanakoさんとそのお友達の方の使っているメールソフト
がなにかを教えてくださると答えてくださる方が答え
やすいと思います。

kanako 1999/03/09(火) 22:43:48
みなさん、ありがとうございます。
ジムシーさんの言う通り、添付ファイル設定の時に「エンコード形式」を指定しようと思い、やってみたんですが、指定するところが
ありません。オプションに「添付をMINEでなく、UUENCODEにする」という
ところはあるのですが、それだけで「BASE64」を選ぶところは
ありません。

匿名希望さん
私はネットスケープコミュニケーターのナビゲーターを使用、友達は
聞いてみないと分からないのですが・・・

もし、もう一度答えていただけたら助かります。

B-Cus 1999/03/09(火) 23:48:24
MIMEでいいです。というか、普通に送ればmultipartになって、
画像ファイルはBASE64でエンコードされるはず。まずは
自分自身に送って試してみるのが吉。

匿名希望 1999/03/10(水) 03:09:28
ということはネットスケープメッセンジャーをお使いということですね。
もしあなたの送信方法がMIMEで正しく送られていて(B-Cus氏の言うとおり自分に送ればわかります)、お友達の方のメールソフトがEUDRA-Jを使っているなら以下のURLを参照してください。
http://netnavi.nikkeibp.co.jp/top/plugin/yagi/mpack.html

kanako 1999/03/10(水) 23:17:52
みなさん、本当に有難うございます。エンコードファイルについて
そして匿名さんの教えてくれた「ヤギ先生のファイル添付基礎講座」を
みて、ファイル添付の知識がつきました。あとは、実行あるのみ!
早速、友人のOSとメールソフトを確認してみます。

ただ、うまく行くか不安です。(不安がってたら何もできないけど)
あの、みなさん・・・お願いです。うまくいったか、はたまた
また疑問が生まれてうなっているかもしれません。
もし、暇があればまたこのラウンジの「kanakoの質問」を
覗いて見てくれませんか?
すみません。ここのおかげで知識が少しずつ増えてるんですが、
なにせはじめての事ばかりで・・・

よろしくお願いします。

匿名希望 1999/03/11(木) 01:38:01
参考になれば幸いです。がんばってください。
結果報告してもらえればうれしいです。

kanako 1999/03/12(金) 23:26:59
送れました!見れたとメールが返ってきました。
ありがとうございました。ホント勉強になりました。ちなみに
友達のメールソフトは「Lotus cc:Mail」と「マイクロソフトの「Outlook Express」」だそうだ。(二人とも
ウィンドウズ)。ほとんどが「BASE64」で大丈夫という事
なんですか?(ユードラ以外は)

匿名希望 1999/03/13(土) 00:10:14
おめでとうございます。今はWindowsやMacでは商用のソフトはほとんど対応しているんじゃないでしょうか?

kanako 1999/03/13(土) 13:23:16
[[解決]]
みなさんのおかげです。
また、質問あったら来ちゃおう・・・

kanako 1999/03/13(土) 13:23:30
[[解決]]
みなさんのおかげです。
また、質問あったら来ちゃおう・・・

いいづか [E-Mail] [HomePage] 1999/03/13(土) 15:15:40
解決後の参考意見。

文字列をBase64にエンコードするロジックは、たとえば
Perlで書いたらこんなかんじですね。

$encoded = encode_mime_B( $moji )とすれば$mojiを
単にBase64エンコードした結果が $encodedに入ってきて、
$encoded = encode_mime_B( $moji,'header' )とすれば$mojiが
無条件にJUNET(JIS)とみなしてメールヘッダ形式にえんこーど
します。ただし、MIMEでは「メールヘッダの数字・アルファベットは
エンコードしてはいけない」というとりきめなので、本当は
ちょっと変。


@d64  = (
    "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P", # 0
    "Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f", # 1
    "g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v", # 2
    "w","x","y","z","0","1","2","3","4","5","6","7","8","9","+","/"  # 3
);

sub encode_mime_B {
    if ( $_[1] eq 'header' ) {
        $b_encoded = "=?ISO-2022-JP?B?";
    } else {
        $b_encoded = "";
    }
    for ( $ix = 0; $ix < length($_[0]); $ix += 3 ){
        $encode_token = substr($_[0],$ix,3 );
        $len = length($encode_token);

        $encode_code  =  ord( substr($encode_token,0,1) ) * 256 * 256 ;
        $encode_code +=  ord( substr($encode_token,1,1) ) * 256 if ($len >= 2);
        $encode_code +=  ord( substr($encode_token,2,1) )       if ($len >= 3);

        $b_encoded .= $d64[$encode_code >> 18 & 0x3f];
        $b_encoded .= $d64[$encode_code >> 12 & 0x3f];
        $b_encoded .= $d64[$encode_code >>  6 & 0x3f] if ($len >= 2);
        $b_encoded .= $d64[$encode_code       & 0x3f] if ($len >= 3);
    }
    $b_encoded .= "==" if ( $len == 1 );
    $b_encoded .= "="  if ( $len == 2 );
    if ( $_[1] eq 'header' ) { $b_encoded .= "?="; }
    return ( $b_encoded );
}

いいづか [E-Mail] [HomePage] 1999/03/13(土) 15:20:15
さらに参考意見。
Microsoft Mailの古い奴(新しいやつも?)なんかはBase64に
対応していないのでUUENCODEしなくてはいけないようです。
エンコード方式の基本はBase64とおなじ(というより、Base64
がUUENCODEの変形)であり、エンコード結果表が違うだけ
です。ただしメール内で「どこからエンコードされた添付
ファイルか」を示す方法は全然違うようです。

このへんの確認で一番手っ取り早いのは、「相手にBase64と
UUENCODEの両方で小さな添付ファイルを送ってあげ、
以降はちゃんと展開できた方(両方とも展開できたらBase64)
で送る」というところですね。

kanako 1999/03/13(土) 17:55:13
[[解決]]
いいづかさん、ありがとうございました。
perlはよく分かりません。(すみません、せっかく教えて
もらったのに)少しずつ勉強してゆきます。

でも、両方送ってみる案はグッドアイディアです!

[上に] [前に] [次に]