概要
request.elで、日本語とかのASCIIじゃない文字列が混ざったページに対してGETすると、curlの結果が文字化けする。
(require 'request) (request "http://rubikitch.com/" :parser 'buffer-string :complete (function* (lambda (&key data &allow-other-keys) (switch-to-buffer "*request-result*") (erase-buffer) (insert data))))
理由
このプルリク。elispについて、サブプロセスでcurlを実行しているけど、実行するバッファのエンコードが binary
になっている。
Win/Mac/Linux全部に対応しないといけないライブラリなので、binaryにすることで動かなくなるのを回避しているのだと思う。
このプルリクの修正が直接の原因。 github.com
でも、binaryにするとASCIIじゃない、具体的には日本語のサイトでGETすると文字化けする。 github.com
対策
こう書いて、dataのエンコードをutf-8とかにする。
(require 'request) (request "http://rubikitch.com/" :parser 'buffer-string :complete (function* (lambda (&key data &allow-other-keys) (switch-to-buffer "*request-result*") (erase-buffer) (insert (decode-coding-string data 'utf-8)))))
ってあるけど、正直知らないとわからないから、ドキュメントやテストには明記したいね。