(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