|
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 ) 198Invalid 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 符号化に一文字追加されることになった、なんてはずはないよね)
( つっこみ )
|
最近の日記 2025年01月15日 ・今更 advent calendar 2025年01月12日 ・金柑収穫 2025年01月07日 ・sh: 1: not found ・sh: 1: not found 2025年01月02日 ・geography/R-s2 | ||