Я собираю данные с RSS-каналов, очищаю их и сохраняю в базу данных. Я использую Java, Tidy, MySQL и JDBC.
Шаги:
- Я беру RSS-записи. Все в порядке.
- Я очищаю HTML с помощью приборки.
Вот одна трансформация. Tidy автоматически преобразует строки типа «Так маловероятно» в «Так маловероятно».
- Я сохраняю эту строку в таблице
MySQL схема
CREATE TABLE IF NOT EXISTS `rss_item_safe_texts` (
`id` int(10) unsigned NOT NULL,
`title` varchar(1000) NOT NULL,
`link` varchar(255) NOT NULL,
`description` mediumtext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
URL-адрес соединения JDBC:
connUrl = "jdbc:mysql://" + host + "/" + database + "?user=" + username + "&password=" + password + "&useUnicode=true&characterEncoding=UTF-8";
Java-код
PreparedStatement updateSafeTextSt = conn.prepareStatement("UPDATE `rss_item_safe_texts` SET `title` = ?, `link` = ?, `description` = ? WHERE `id` = ?");
updateSafeTextSt.setString(1, EscapingUtils.escapeXssInjection(title));
updateSafeTextSt.setString(2, link);
updateSafeTextSt.setString(3, EscapingUtils.escapeXssInjection(description));
updateSafeTextSt.setInt(4, itemId);
updateSafeTextSt.execute();
updateSafeTextSt.close();
В результате я вижу в базе данных неработающие символы, такие как «Так что ? вряд ли» То же самое я вижу тогда, когда выводит текст на веб-странице (utf-8 page).