Android-декодирование HTML - PullRequest
       5

Android-декодирование HTML

4 голосов
/ 07 февраля 2012

Я запутался в HTML-тексте, который мне нужно декодировать, прежде чем я отобразлю его пользователю. Я делаю:

result= Html.fromHtml(temp).toString();

где temp содержит что-то вроде: "B \ M00 Collision Repair". Однако результат содержит точно так же, как temp после выполнения. Что мне здесь не хватает?

Ответы [ 5 ]

17 голосов
/ 26 августа 2012

Некоторые пояснения:

  • "B \u0026 M Collision Repair" - это не HTML.
  • "B & M Collision Repair" - это HTML.

Java для HTML

"B \u0026 M Collision Repair" не является HTML.Это литерал Java String , или как вы создаете строку в коде Java.Символы Unicode хранятся в виде декодированных необработанных символов.Нотация \u используется только для экранирования символов Юникода при создании строки, она не сохраняется таким образом.Примечание: поскольку этот символ амперсанда находится в диапазоне ISO-8859-1, его не нужно экранировать таким образом."B & M Collision Repair" - это то же самое в Java.

Преобразование строк Java в HTML является обычным явлением, и его следует выполнять для отображения строк Java в веб-браузере.Это будет называться кодировка HTML .

Чтобы преобразовать строку Java в HTML, тем самым кодируя необработанные символы Unicode Java в объекты HTML:

String java = "B \u0026 M Collision Repair";
#=> (String) "B \u0026 M Collision Repair"
#=> (String) "B & M Collision Repair"

String html = Html.escapeHtml(html);
#=> (String) "B &  M Collision Repair"
#=> (String) "B &  M Collision Repair"

#or
String html = Html.toHtml(html).toString();
#=> (String) "B &  M Collision Repair"
#=> (String) "B &  M Collision Repair"

HTML в Java

"B & M Collision Repair" - это HTML.Символы Unicode хранятся в виде закодированных символов.Обозначение &#x; используется для экранирования символов Юникода для передачи по ISO-8859-1.Веб-браузер декодирует их для отображения фактических символов Юникода.

Преобразование HTML в строки Java встречается реже и обычно зарезервировано для «очистки» или «разбора» строк Java для хранения и отображения в некоторых системах, которые неподдержка HTML.Это будет называться декодирование HTML .

Чтобы преобразовать HTML в строку Java, тем самым декодируя HTML-объекты в необработанные символы Unicode Java:

String html = "B & M Collision Repair";
#=> (String) "B & M Collision Repair"

String java = Html.fromHtml(html).toString();
#=> (String) "B \u0026 M Collision Repair"
#=> (String) "B & M Collision Repair"
1 голос
/ 07 февраля 2012

Даже у меня была такая же проблема. Попробуйте это,

Spanned ss=Html.fromHtml(your String);
String tempString=ss.toString();
0 голосов
/ 04 июля 2019
String firstName = "Some Name";
String secondName = "Other Name"
String concatStrings = firstName + " \u25CF " + secondName;
textView.setText(Html.fromHtml("<font color'#2c51be'>Name: </font>" + concatStrings));

Юникод \u25CF => ●

Используйте эту ССЫЛКУ , чтобы получить символы Unicode

0 голосов
/ 07 февраля 2012

\ n0006 - это Unicode, который не переводится. Предложение:

String temp = "<html>B \u0026 M Collision Repair</html>";
String result = Html.fromHtml(temp).toString();
0 голосов
/ 07 февраля 2012

Попробуйте это класс.

result = URLDecoder.decode(temp,"UTF-8");
...