PC/NETのetcetra/2006-01-13

Last-modified: 2006-01-13 (金) 15:17:44 (5492d)
※※このサイトは2012年頃より更新を停止しています。※※

メールデータとvimと文字コード

  • MH形式のメールデータのヘッダ編集
    以前にmuttというコマンドラインベースのメーラを使うことになった時期があった。
    そのデータの扱いとの互換性や、メール一件につきデータ一つという保存形式であるMH形式の魅力もあって、俺は現在sylpheedというメーラ(v1.0.4 Debian Sarge)を普段使っています。

    俺がメールを使い始めたのはPHSのメール機能からだったような気がする。
    それから2000年の10月頃だったか、NTTが母体のgooというサイトのフリーメールを使い出した。
    PCを使ってメールを始めると、携帯の入力装置でチマチマ入力してるのが耐えられなくなった。
    そしてメールを使っているうちに、携帯でもパソコンでも同様にデータを扱えるようにしたいという要求が自分の中で出始めた。
    そうしてメールのデータ保存形式、文字コードの扱い、転送したメールのヘッダを編集して転送前の情報に戻す、などといった方法を模索するようになって、その結果たどり着いたのが今の環境である。

    フリーメールなどからデータ保管のためにメールを転送すると、ローカルに保存したメールのヘッダ情報は転送した時点の情報になってしまうわけだが、個人的にはそれが気に食わない。
    そこで、「MH形式だし、ヘッダを編集してしまおう」と考えるわけだが、エディタにvimを使用しているんだけど、データを開いて本文を読める状態にするのにすんなりいかなかった。
    さらにヘッダ情報の中でも件名(Subject)はさらにひと手間(日本語の場合)かかっていて、これをなんとかするのにもひと苦労だった。

    というわけで、ちょいとメモを残しておく。

    • vimでファイルを開いてるとき/開くときの文字コード指定
      参考
      ■改行コード指定 (fileformat = ff)
      ※今の表示状態で、コードを変更する(その後保存するとそのコードで保存される)
      set fileformat=dos (CR+LF)
      set fileformat=unix (LF)
      set fileformat=mac (CR)
      ※指定のコードでファイルを開く
      :e ++ff=unix filename ←開く時に指定
      ■文字コード指定 (fileencoding = fenc)
      ※今の表示状態で、コードを変更する(その後保存するとそのコードで保存される)
      set fileencoding=cp932 (SJIS)
      set fileencoding=euc-jp (EUC)
      set fileencoding=iso-2022-jp (JIS)
      set fileencoding=utf-8 (UTF8)
      ※指定の文字コードでファイルを開く
      :e ++enc=iso-2022-jp filename
      あとここらへんとかこのへんもなんかの参考に。
    • メールヘッダの件名(Subject)を編集する(直す)
      上記のようにしてiso-2022-jp(JIS)でメールのファイルを開くと、本文は読めるが件名はMIMEエンコードされている状態だ。
      しかし件名も手直ししたいという場合は、じゃぁどうしよう、と。
      エンコードされた状態で書き込まれてるんだから、エンコードした状態の文字列で上書きしてしまえばよいわけだ。
      というわけで、フリーで公開されているフォームメールのスクリプトを拝借して、自分の希望の件名にJISエンコードをかけた文字列を表示してしまうことにした。
      これを頂戴して、ソースと確認画面にちょいと手を加えて、希望の件名をJISエンコードして表示させた。
      ミソは下記。
      jcode.pl
      mimew.pl
      jcode::convert(\$value, "jis");
      $subj = mimeencode("Subject: $value\n");
    • kterm上vimで開いたファイルに貼り付け
      上記のようにして表示した文字列をコピーして貼り付けしようとするとktermが言うこときかない。
      こっちを参考にして張り付け。
      へー、ktermって shift + insert で貼り付けするんだ。
      中ボタンとかだと思ってた。
    • ついでにtouchコマンドの更新時刻指定
      何の作業をしていても、ファイルのタイムスタンプを希望の時間に直したいこともあるでしょう。そこで使うのがtouchコマンド。
      いつもこのオプションの時刻指定記述方法を忘れるんだよね。
      そのたんびにgoogleで検索してここにたどり着く。
      以下に抜粋しておく。
      -t time
         time で指定した時刻を使い変更する。
         引数は次のような明確な意味を持つ10進数の形式で指定する。
             [[CC]YY]MMDDhhmm[.SS]

コメントはありません。 コメント/PC/NETのetcetra/2006-01-13

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS