Одна небольшая настройка, которую я должен был сделать на других ответах, состоит в том, чтобы только показать панель в viewWillDisappear, только если она исчезает из-за нажатия на нее элемента навигации. Это потому, что вид может исчезнуть по другим причинам.
Таким образом, я могу только показать панель, если этот вид больше не является самым верхним видом:
- (void) viewWillDisappear:(BOOL)animated
{
if (self.navigationController.topViewController != self)
{
[self.navigationController setNavigationBarHidden:NO animated:animated];
}
[super viewWillDisappear:animated];
}
cgi.escape
в порядке. Он экранируется:
<
в & lt;
>
в & gt;
&
в & amp;
Этого достаточно для всех HTML.
РЕДАКТИРОВАТЬ: Если у вас есть символы, отличные от ascii, которые вы также хотите избежать, для включения в другой закодированный документ, который использует другую кодировку, например , говорит Крейг , просто используйте:
data.encode('ascii', 'xmlcharrefreplace')
Don ' Не забудьте сначала декодировать данные
в unicode
, используя любую кодировку, в которой они были закодированы.
Однако, по моему опыту, такое кодирование бесполезно, если вы просто работаете с unicode
все время с самого начала. Просто закодируйте в конце кодировку, указанную в заголовке документа ( utf-8
для максимальной совместимости).
Пример:
>>> cgi.escape(u'<a>bá</a>').encode('ascii', 'xmlcharrefreplace')
'<a>bá</a>
Также стоит отметить (спасибо Грегу) дополнительный параметр quote
cgi.escape
. Если для него установлено значение True
, cgi.escape
также экранирует символы двойных кавычек ( "
), поэтому вы можете использовать полученное значение в атрибуте XML / HTML.
РЕДАКТИРОВАТЬ: Обратите внимание, что cgi.escape устарел в Python 3.2 в пользу html.escape
, который делает то же самое, за исключением того, что цитата
по умолчанию имеет значение True.
cgi.escape
должен быть подходящим для экранирования HTML в ограниченном смысле экранирования тегов HTML и символьных сущностей.
Но вам, возможно, придется также рассмотреть проблемы кодирования: если HTML, который вы хотите процитировать, содержит символы, отличные от ASCII, в определенной кодировке, тогда вам также придется позаботиться о том, чтобы вы представляли их разумно при цитировании. Возможно, вы могли бы преобразовать их в сущности. В противном случае вам следует убедиться, что между «исходным» HTML и страницей, в которую он встроен, выполняется правильный перевод кодировки, чтобы избежать искажения символов, отличных от ASCII.