(base64-encode-string (encode-coding-string "ウィキペディアは誰でも編集できるフリー百科事典です" 'raw-text) t) ; => "44Km44Kj44Kt44Oa44OH44Kj44Ki44Gv6Kqw44Gn44KC57eo6ZuG44Gn44GN44KL44OV44Oq44O855m+56eR5LqL5YW444Gn44GZ"
ポイント
base64-encode-string
にマルチバイト文字を含む文字列を渡すと (error "Multibyte character in data for base64 encoding") になってしまうのでencode-coding-string
で変換したものを渡す必要がある。参考 websocket.elでマルチバイト文字を扱う時の注意 - syohex’s diary'raw-text
というシンボルの出処とかは GNU Emacs Lispリファレンスマニュアル: 32. 非ASCII文字 も要参照base64-encode-string
の第二引数は line feed (line break; 改行文字のこと) を含むか否かのフラグ GNU Emacs Lisp Reference Manual: Base 64 Ruby でいうとBase64.encode64
とBase64.strict_encode64
の違い Base 64 エンコーディングと改行 (line feed) の話 - ひだまりソケットは壊れない
(base64-encode-string "ウィキペディアは誰でも編集できるフリー百科事典です") Debugger entered--Lisp error: (error "Multibyte character in data for base64 encoding") base64-encode-string("ウィキペディアは誰でも編集できるフリー百科事典です") eval((base64-encode-string "ウィキペディアは誰でも編集できるフリー百科事典です") nil) eval-last-sexp-1(t) eval-last-sexp(t) eval-print-last-sexp(nil) call-interactively(eval-print-last-sexp nil nil) command-execute(eval-print-last-sexp) (encode-coding-string "ウィキペディアは誰でも編集できるフリー百科事典です" 'raw-text) "\343\202\246\343\202\243\343\202\255\343\203\232\343\203\207\343\202\243\343\202\242\343\201\257\350\252\260\343\201\247\343\202\202\347\267\250\351\233\206\343\201\247\343\201\215\343\202\213\343\203\225\343\203\252\343\203\274\347\231\276\347\247\221\344\272\213\345\205\270\343\201\247\343\201\231" (base64-encode-string (encode-coding-string "ウィキペディアは誰でも編集できるフリー百科事典です" 'raw-text)) "44Km44Kj44Kt44Oa44OH44Kj44Ki44Gv6Kqw44Gn44KC57eo6ZuG44Gn44GN44KL44OV44Oq44O8 55m+56eR5LqL5YW444Gn44GZ" (base64-encode-string (encode-coding-string "ウィキペディアは誰でも編集できるフリー百科事典です" 'raw-text) t) "44Km44Kj44Kt44Oa44OH44Kj44Ki44Gv6Kqw44Gn44KC57eo6ZuG44Gn44GN44KL44OV44Oq44O855m+56eR5LqL5YW444Gn44GZ" irb(main):003:0> puts Base64.encode64("ウィキペディアは誰でも編集できるフリー百科事典です") 44Km44Kj44Kt44Oa44OH44Kj44Ki44Gv6Kqw44Gn44KC57eo6ZuG44Gn44GN 44KL44OV44Oq44O855m+56eR5LqL5YW444Gn44GZ => nil irb(main):004:0> puts Base64.strict_encode64("ウィキペディアは誰でも編集できるフリー百科事典です") 44Km44Kj44Kt44Oa44OH44Kj44Ki44Gv6Kqw44Gn44KC57eo6ZuG44Gn44GN44KL44OV44Oq44O855m+56eR5LqL5YW444Gn44GZ => nil (string-equal (base64-encode-string (encode-coding-string "ウィキペディアは誰でも編集できるフリー百科事典です" 'raw-text) t) "44Km44Kj44Kt44Oa44OH44Kj44Ki44Gv6Kqw44Gn44KC57eo6ZuG44Gn44GN44KL44OV44Oq44O855m+56eR5LqL5YW444Gn44GZ" ) t