2013-04-05 4 views
2

У меня есть строка utf8 с символами, отличными от ASCII. Мне нужно поместить его в html-файл в форме амперсанд-хэш-цифр-с запятой. Каков наилучший способ сделать это?Python: что является самым простым способом преобразования строки utf8 в �

+0

Что преобразовывается, в UTF-8 байт или Unicode элемент кода они кодируют? –

ответ

2

Используйте .encode метод с 'xmlcharrefreplace' передается в качестве параметра errors:

In [1]: help(unicode.encode) 
Help on method_descriptor: 

encode(...) 
    S.encode([encoding[,errors]]) -> string or unicode 

    Encodes S using the codec registered for encoding. encoding defaults 
    to the default encoding. errors may be given to set a different error 
    handling scheme. Default is 'strict' meaning that encoding errors raise 
    a UnicodeEncodeError. Other possible values are 'ignore', 'replace' and 
    'xmlcharrefreplace' as well as any other name registered with 
    codecs.register_error that can handle UnicodeEncodeErrors. 

In [2]: ustr = u'\xa9 \u20ac' 

In [3]: print ustr 
© € 

In [4]: print ustr.encode('ascii', 'xmlcharrefreplace') 
© € 
+0

'ustr' Я полагаю, это строка в Юникоде (?) – gipi

+0

@gipi - да. добавлен пример. – root

+0

отличное решение, спасибо большое – dimitri