hns - 日記自動生成システム - Version 2.19.9

先月 2008年03月 来月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Namazu for hns による簡易全文検索
詳しくは 詳細指定/ヘルプを参照して下さい
検索式:

2008年03月09日() 旧暦 [n年日記] [更新:"2008/03/10 01:09:27"]

#1 [Mime] mixi からのメールの題名が読めなくなって

人に言われて気が付いたのだけれど、3/4/2008 から、mixi から 来るメールの題名の符号化が変ったらしい。Wanderlust で読んでいると、
(mel) Invalid encoded-text W21peGldIB .... RyQ5ISobKEI==
のような字が見えて文字にならない。しかし、これを gmail に転送して見ると、 僅かに例外はあるが読める。そこで調べると、これは flim-1.14.9 の mel.el の中の 196 行目で問題になっているらしい。
   153  (defvar mel-b-builtin
   154     (and (fboundp 'base64-encode-string)
   155          (subrp (symbol-function 'base64-encode-string))))
   156  
   157  (when mel-b-builtin
   158    (mel-define-backend "base64")
   159    (mel-define-method-function (mime-encode-string string (nil "base64"))
   160                                'base64-encode-string)
   161    (mel-define-method-function (mime-decode-string string (nil "base64"))
   162                                'base64-decode-string)
   163    (mel-define-method-function (mime-encode-region start end (nil "base64"))
   164                                'base64-encode-region)
   165    (mel-define-method-function (mime-decode-region start end (nil "base64"))
   166                                'base64-decode-region)  
   167    (mel-define-method mime-insert-encoded-file (filename (nil "base64"))
   168      "Encode contents of file FILENAME to base64, and insert the result.
   169  It calls external base64 encoder specified by
   170  `base64-external-encoder'.  So you must install the program (maybe
   171  mmencode included in metamail or XEmacs package)."
   172      (interactive "*fInsert encoded file: ")
   173      (insert (base64-encode-string
   174               (with-temp-buffer
   175                 (set-buffer-multibyte nil)
   176                 (binary-insert-encoded-file filename)
   177                 (buffer-string))))
   178      (or (bolp) (insert ?\n)))
   179    (mel-define-method mime-write-decoded-region (start end filename
   180                                                        (nil "base64"))
   181      "Decode the region from START to END and write out to FILENAME."
   182      (interactive "*r\nFWrite decoded region to file: ")
   183      (let ((str (buffer-substring start end)))
   184        (with-temp-buffer
   185          (insert str)
   186          (base64-decode-region (point-min) (point-max))
   187          (write-region-as-binary (point-min) (point-max) filename))))
   188      
   189    ;; (mel-define-method-function (encoded-text-encode-string string (nil "B"))
   190    ;;                             'base64-encode-string)
   191    (mel-define-method encoded-text-decode-string (string (nil "B"))
   192      (if (string-match (eval-when-compile
   193                          (concat "\\`" B-encoded-text-regexp "\\'"))
   194                        string)
   195          (base64-decode-string string)
   196        (error "(mel) Invalid encoded-text %s" string)))
   197    )
   198  
Invalid encoded-text というのは いくつかあるので、それらを区別するのに (mel) という字を加えてある。 この問題は、 「string の中に、B-encoded-text-regexp があるはずだが見つからない」ということで、 B-encoded-text-regexp を探すと、mime-def.el にある。
   161  ;;; @@ base64 / B
   162  ;;;
   163  
   164  (defconst base64-token-regexp "[A-Za-z0-9+/]")
   165  (defconst base64-token-padding-regexp "[A-Za-z0-9+/=]")
   166  
   167  (defconst B-encoded-text-regexp
   168    (concat "\\(\\("
   169            base64-token-regexp
   170            base64-token-regexp
   171            base64-token-regexp
   172            base64-token-regexp
   173            "\\)*"
   174            base64-token-regexp
   175            base64-token-regexp
   176            base64-token-padding-regexp
   177            base64-token-padding-regexp
   178            "\\)"))
base64-token-regexp は一文字づつなので、これって文字数が合わないということになるのかな
          ...          7   
1         ...          0  345 
W21peGldIB...     RyQ5ISobKEI==
確かに 73 文字 + EI== になっていて 73 が 4 の倍数ではない。 一文字削ったら、文字は途中から化けてはいるが、一部読めるようになった。

やはり mixi 側の問題の気がして来た。... (まさか最近 base64 符号化に一文字追加されることになった、なんてはずはないよね)
一応お知らせは送っておきました。
最初に教えてもらった人からの情報ですが、「単に = が一つ多い(多過ぎる)」だけのようです。 手でその部分を一つ減らすと、読めるようになります。




最近の日記
2024年05月06日
py-setuptools (python 3.11.9)
make release took 1 hours and 10 min
qemu invocation for 10.99.10
2024年05月05日
Windows 10 version
serial connection
bc bench
2024年05月04日
Trial on 10.99.10
another version (later trial) to succeed
2024年04月29日
dkim
2024年03月10日
停電 (瞬電)
以上、1 日分です。
タイトル一覧
カテゴリ分類
Powered by hns-2.19.9, HyperNikkiSystem Project

Count.cgi (since 2000/02/05)