エンコーディングで使用できない文字を数値文字参照に変換する方法。
ユニコード文字列を指定したエンコーディングに変換したとき、変換できない文字があるとエラーが送出されます。
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>©®</body></html>
‘xmlcharrefreplace’を使えば、ファイルに指定したエンコーディングを使い、ブラウザでユニコード文字列を表示することが出来ます。