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 &euro;
</span>

Это представление знака € в HTML

Модифицировано отсюда:

Чтобы сопоставить отдельные символы, вы можете просто включить их в класс символов, либо в виде литералов, либо через \u20AC синтаксис

Юникод для евро \u20AC,


Примечание: я не уверен, почему это будет отображаться как ?, но это может быть только потому, что это не ASCII и может отсутствовать в шрифте.

Другие вопросы по тегам