Android имеет два разных способа избежать/кодировать HTML-символы/сущности в строках:
-
Html.escapeHtml(String)
, добавленный в API 16 (Android 4.1). Документы говорят:Возвращает HTML-экранированное представление данного открытого текста.
-
TextUtils.htmlEncode(String)
В этом документе говорится:Html-кодирует строку.
Читая документы, они оба, похоже, делают почти то же самое, но, тестируя их, я получаю довольно загадочный (для меня) вывод.
Eg. При вводе: <p>This is a quote ". This is a euro symbol: €. <b>This is some bold text</b></p>
-
Html.escapeHtml
дает:<p>This is a quote ". This is a euro symbol: €. <b>This is some bold text</b></p>
-
В то время как
TextUtils.htmlEncode
дает:<p>This is a quote ". This is a euro symbol: €. <b>This is some bold text</b></p>
Таким образом, кажется, что второй ускоряет/кодирует цитату ("), но первая не делает, хотя первая кодирует символ Евро, а вторая - нет. запутался.
Итак, какая разница между этими двумя методами? Какими персонажами каждый побег/кодирование? Какая разница между кодированием и экранированием здесь? Когда я должен использовать один или другой (или мне, вздохнуть, использовать их вместе?)?