Subscribed unsubscribe Subscribe Subscribe

@kyanny's blog

Write down what I learnt. Opinions are my own.

Emacs Lisp で Base64 エンコード

(base64-encode-string
 (encode-coding-string
  "ウィキペディアは誰でも編集できるフリー百科事典です"
  'raw-text)
 t)
; => "44Km44Kj44Kt44Oa44OH44Kj44Ki44Gv6Kqw44Gn44KC57eo6ZuG44Gn44GN44KL44OV44Oq44O855m+56eR5LqL5YW444Gn44GZ"

ポイント

(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