unicodeをHTML用にエスケープ
python-webkit2pngは、HTMLに日本語があると文字化けしてしまったのですが、
non-ascii文字をエスケープすれば正しく表示してくれました。
そこで、unicodeのnon-ascii文字をエスケープするコードを書いてみました。
#encoding:shift-jis from __future__ import with_statement, division, print_function class EscapeMap(object): control_chars = { ord(u"<") : u"lt", ord(u">") : u"gt", ord(u"&") : u"amp", ord(u"\"") : u"quot", } def __getitem__(self, code): if code in self.control_chars: return u"&{0};".format(self.control_chars[code]) elif code in xrange(128): #is ascii char return code else: return u"&#{0};".format(code) def escape_for_html(ss): """ >>> import escape >>> s = u'あいうえお abcde >|python| &"' >>> escape.escape_for_html(s) u'あいうえお abcde <>&"' """ return ss.translate(EscapeMap()) def main(): import doctest doctest.testmod() if __name__ == "__main__": main()