Skip to content
 

Pythonでエンコーディングで使用できない文字を数値文字参照に変換する

このエントリーをはてなブックマークに追加
はてなブックマーク - Pythonでエンコーディングで使用できない文字を数値文字参照に変換する
Share on Facebook
Post to Google Buzz
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
Pythonでエンコーディングで使用できない文字を数値文字参照に変換する山本隆の開発日誌

エンコーディングで使用できない文字を数値文字参照に変換する方法。

ユニコード文字列を指定したエンコーディングに変換したとき、変換できない文字があるとエラーが送出されます。

f = open('sjis.html', 'w')
f.write(u'<html><body>©®</body></html>'.encode('shift_jis'))
f.close()

エラーメッセージ

UnicodeEncodeError: 'shift_jis' codec can't encode character u'\xa9' in position 12: illegal multibyte sequence

encode()の第2引数に’xmlcharrefreplace’を指定すると、変換できない文字は数値文字参照に変換されます。

f = open('sjis.html', 'w')
f.write(u'<html><body>©®</body></html>'.encode('shift_jis', 'xmlcharrefreplace'))
f.close()

出力結果

<html><body>&#169;&#174;</body></html>

‘xmlcharrefreplace’を使えば、ファイルに指定したエンコーディングを使い、ブラウザでユニコード文字列を表示することが出来ます。

関連記事:

  1. Pythonでエンコーディングで使用できない文字を文字実体参照に変換する
  2. Base64のエンコード
  3. quoted-printableのエンコード
  4. 深さ優先探索
  5. C++Builder2009でMSHTMLを使ってHTMLを解析する

コメントをどうぞ