LoginSignup
2
1

More than 5 years have passed since last update.

NokogiriでXMLパースするときにはencodingに気をつけろ!

Posted at

ちょっと嵌ったので備忘録

Nokogiri::XML(string)

でファイルから読み込んだXML文字列をパースしていたんだけど、どうも途中で尻切れになってしまって最後まで読み込めなかった。早速疑ったのはencodingだったけど、ズバリそうでした。
xmlの冒頭に

<?xml version="1.0" encoding="Shift-JIS"?>

なんてなっている場合は以下のようにエンコード指定しないとうまくいかない。
本当はうまく行くはずなんだけど、今回はSJISには存在しない全角マイナスが含まれていた。
どうやらWindowsユーザーは俺のコードはSJISだ!と勘違いしてるようである。
Windows3.1以降の文字コードはCP932である。

Nokogiri::XML(xml, nil, 'CP932')

ってことで明示的にエンコードを指定して解決したけど、Nokogiriも例外出してくれればいいのになぁ。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1