LINUX.ORG.RU

Символ '?' вместо кириллицы при чтении из UTF-8 базы данных MySQL

 , , , ,


0

1

Странно, но мало где описана такая проблема. Видимо, я нуб.
Есть база данных, данные в UTF-8. Читаю так:

try {
   Class.forName("com.mysql.jdbc.Driver");
   java.sql.Connection con = DriverManager.getConnection(
	"jdbc:mysql://localhost:3306/test",
	"test", "test"); 
   Statement st = con.createStatement();
   ResultSet rs = st.executeQuery("select `author` from `books`");
   while(rs.next()) {
      out.println(rs.getString(1));
   }
} catch(Exception e)
{ }
Читается это:
?.?.???????
?.?????????
?.?????
?.????????????
?.????????????
Пробовал заменять connection string на «jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8», ничего не изменялось. ЧЯДНТ?

★★★★★
Ответ на: комментарий от Shtsh

Это отдельным запросом? Не помогает.

CYB3R ★★★★★
() автор топика

Чтобы utf8 был везде (включая html/jsp):
1. Проверь еще раз в базе кодировку.
2. Сначала сделай SET NAMES UTF8, а потом SELECT `author` FROM `books`;
3. Дебаггером проверь, что возвращается в описанном тобою методе.
4. Может у тебя там фильтр используется какой-нибудь, который неправильно настроен?
5. В html:

<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
6. В jsp:
<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" 
language="java"%>
7. Вот фильтр:
SetCharacterEncodingFilter (только его еще надо будет прописать с нужными параметрами в web.xml)

kovrik ★★★★★
()
Ответ на: комментарий от kovrik

Спасибо, спасает именно директива pageEncoding=«UTF-8», хотя кодировка указана в html-тэге meta. С указанным pageEncoding база данных возвращает кириллицу, но ломается контент, встроенный при помощи tag. Выглядит так:

книги о программировании
Нужно ещё как-то tag'ам кодировку указать.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Нашёл багрепорт с похожими симптомами, виноват maven, если я правильно понял.

CYB3R ★★★★★
() автор топика

Это из БД такое приходит? Если присвоить переменной кириллическую строку и вывести что будет?

mopsene ★★★
()
Ответ на: комментарий от mopsene

Проблема с БД уже решена парой ответов выше, но там же появилась проблема с tag'ами.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от kovrik

Я нуб и совершенно не представляю, как работает фильтр, лучше выпилю тэги пока и поду почитаю, что такое тэги, нужны ли они мне, и зачем нужны фильтры.

CYB3R ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.