У меня есть скрипт на PHP, который хранит значения в базе данных MySQL из интернет-магазина. Магазин позволяет клиентам оставлять сообщения, которые могут создать хаос, когда они используют смайлики. Чтобы эти символы не сломали мой скрипт, я использовал FILTER_SANITIZE_STRING
и FILTER_FLAG_STRIP_HIGH
во всех моих строках перед отправкой их всех в MySQL.
Это работает хорошо, за исключением того, что когда я снова отображаю его в написанной мной Java-программе, у меня будут такие вещи, как "I'm"
вместо "I'm"
.
Есть ли способ заставить Java находить и преобразовывать значения ASCII обратно в символы?
Мой текущий план атаки состоит в том, чтобы иметь функцию, которая принимает каждый соответствующий строковый столбец, проверяет каждое слово, ища &#
, находит позицию двоеточия после &#
, заменяет это значение соответствующим ASCII символ и возвращает новую строку.
Это выполнимо, но я надеюсь, что есть способ сделать это, не изобретая колесо.
Редактировать: Спасибо @rzwitserloot за то, что он указал мне правильное направление, для тех, кто видит это и не читает мой комментарий в своем ответе, я использовал JSoup . Вот фрагмент заключительного раздела кода, относящегося к этому, на стороне Java для всех, кто работает через это:
// Connect method opens a connection to the MySQL server
connect();
// Query the MySQL server
resultSet = statement.executeQuery("select * from order_tracking order by DateOrdered");
// If there is any result, iterate through them until the end is reached.
while (resultSet.next()) {
// Add each returned row into the list to send to the table
Jsoup.parse(resultSet.getString(2)).text()
.
.
.
}
.text()
в конце Jsoup.parse(String)
избавляет от html-форматирования (то есть <Head><Body>
и т. Д.), Который Jsoup автоматически добавляет и возвращает только текстовую часть с &
(или любым другим значением ascii может быть) правильно отформатирован.
Спасибо!