Pythonで文字コードを変更する際に変換対象の文字列に変換不能な文字が
含まれているとUnicodeDecodeErrorが発生して困ることが多かった。
しかし、unicode関数やencode関数のignoreオプションを使うと、
それらの変換不能な文字列を無視して変換してくれる。
こんな便利なものがあったとは。
BeatifulSoupで不正な文字列を含むXMLを読み込むと、読み込んだ時に
文字コードをご認識してしまう問題が発生していたが、ignoreオプション付きで
文字コードを再変換したらうまく認識してくれた。
# file_dataは壊れたXMLデータ(UTF-8) soup = BeautifulSoup(file_data) print soup.originalEncoding # 文字コードが誤認識される soup = BeautifulSoup(unicode(file_data, "utf-8").encode("utf-8")) # UnicodeDecodeError発生 soup = BeautifulSoup(unicode(file_data, "utf-8", 'ignore').encode("utf-8")) print soup.originalEncoding # utf-8で正しく認識される
ただ、これが正しいやり方なのかが分からない。
そもそもignoreオプションは割と使いまくるものなのだろうか。
ignoreオプションについては「速効!Python」に載っていた。
もっとちゃんと読もうと思った。

- 作者: 上平哲
- 出版社/メーカー: 秀和システム
- 発売日: 2007/04
- メディア: 単行本
- 購入: 1人 クリック: 29回
- この商品を含むブログ (15件) を見る