|
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 符号化に一文字追加されることになった、なんてはずはないよね)
( つっこみ )
|
最近の日記 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日 ・停電 (瞬電) | ||