OK. Так что давайте посмотрим на то, что делает ваш код:
// line 1
String s = "สวัสดี Mr.Java Sp'e c'i'a'l'' '";
У нас есть строки с различными международными символами в нем ... и некоторые "'"
персонажей.
// line 2
s = s.replaceAll("'", "'");
Если предположить, что те действительно "'"
символов символы, мы заменим все экземпляры "'"
с/HTML мнемоники XML дает нам:
"สวัสดี Mr.Java Sp'e c'i'a'l'' '"
И так ...
// line 3
s = StringEscapeUtils.escapeHtml(s);
Это заменяет любые активные символы HTML/XML символьными ссылками. Сюда входят амперсанды "&"
, которые вы ранее вставляли. Результат таков:
"&#xxxx;&#xxxx;&#xxxx;&#xxxx; Mr.Java Sp'e
c'i'a'l'' '"
(?. Числовые ссылки на символы &#xxxx;
кодируют эти тайские() символов)
Когда вы вставляете, что в HTML-документ и отображает его, вы увидите «สวัสดี Mr. Java-Sp & APOS; ес & APOS, я & APOS; а & APOS; л & APOS; & APOS; & APOS;»
Посмотрите, что произошло? У вас есть HTML, который ускользнул от ваших апострофов HTML !!
Так что вам действительно нужно делать?
Нет необходимости в замене апострофов '
. Апоптопы являются законными в тексте HTML.
Там должно быть нет необходимости добавлять HTML ускользает, так что вы можете хранить текст в базе данных:
Любая современная база данных позволит вам хранить строки Unicode без какого-либо специального кодирования.
Если вы пытаетесь помешать анализу SQL базы данных путать кавычки в тексте, который вы храните, вы делаете это неправильно. right способ сделать это - использовать PreparedStatement
, добавить заполнитель параметров в запрос и использовать методы PreparedStatement.setXxx
для предоставления значений параметров. execute
(или что-то еще) позаботится обо всех утечках SQL, которые необходимо выполнить.
ли это тип или ваша строка именно это? Потому что это не допустимая строка, она имеет «оставленную в покое». Вы должны удалить ее или удалить ее. – Djon
Это просто пример, TYPO, но в текстовом поле JSP этому также будет разрешено вводить как примечание. – sunleo
возможно, это связано с UTF-форматом. Возможно, ваш db не сохранил/поддерживал формат utf !!. – iMBMT