Я пишу синтаксический анализатор RSS-канала с использованием Java и столкнулся с проблемой при синтаксическом анализе канала с арабскими / китайскими / японскими символами. Пример подачи
Когда я их печатаю, я просто получаю наборы вопросительных знаков "?????? ?? ????? ??".
Они попадают в мою базу данных (mysql, подключенный с помощью hibernate, в качестве кодировки установлен utf8) тоже так.
Это часть кода, которая отвечает за получение заголовка из ленты:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(url.openStream());
doc.getDocumentElement().normalize();
Node channelNode = doc.getElementsByTagName("channel").item(0);
NodeList channelList = channelNode.getChildNodes();
for (int i = 0; i < channelList.getLength(); i++) {
Node element = channelList.item(i);
String name = element.getNodeName();
if (name.equalsIgnoreCase("title")) {
rssName = element.getTextContent();
break;
}
}
Как получить правильные символы в базе данных?
Когда я копирую их из канала и вставляю вручную в базу данных, все в порядке.
Thanx
UPDATE:
Добавление дополнительных строк в мой конфигурационный файл hibernate устранило проблему:
<property name="hibernate.connection.useUnicode">true</property>
<property name="hibernate.connection.characterEncoding">UTF-8</property>