Netbeans не декодирует специальные символы
Я пытаюсь проанализировать HTML-файл с помощью Jsoup. В этом HTML есть специальный символ, который я хочу удалить, (€), вот как это изначально:
<span class="price-value">
49,99 €
</span>
Однако Netbeans показывает это при печати этого элемента:
49.99 ?
Поэтому я не могу сделать это:
price.replace( "€", "" ).replace( ",", "." ).trim();
Ни это:
price.replace( "\\?", "" ).replace( ",", "." ).trim();
Что я могу с этим поделать?
3 ответа
NetBeans показывает это при печати этого элемента
Почти наверняка это происходит потому, что ваша консоль NetBeans не была настроена для поддержки символов Unicode, поэтому вы были введены в заблуждение. Для решения этой проблемы см.: Как изменить кодировку по умолчанию в NetBeans 8.0
Итак, с документом все в порядке, регулярные выражения сработали бы, и больше не нужно ничего менять.
Вот минимальный рабочий пример правильного анализа исходного документа, замены символа евро и 49.99
вернулся.
Element doc = Jsoup.parse("<html><body><span class=\"price-value\">49,99 €</span></body></html>");
Element span = doc.select("span").get(0);
System.out.println( span.text().replace("€", "").replace(",", ".").trim() );
Используйте это ->
<span class="price-value">
49,99 €
</span>
Это представление знака € в HTML
Модифицировано отсюда:
Чтобы сопоставить отдельные символы, вы можете просто включить их в класс символов, либо в виде литералов, либо через
\u20AC
синтаксис
Юникод для евро \u20AC
,
Примечание: я не уверен, почему это будет отображаться как ?
, но это может быть только потому, что это не ASCII и может отсутствовать в шрифте.