@reset37

Как настроить правильную кодировку в связке MySQL + Tomcat?

Имеется база mysql. Кодировка базы - UTF-8. Имеется пул соединений на базе tomcat, при получении данных через него - все русские буквы заменяются на '?'. При этом если сделать запрос к БД не из Tomcat, а из обычного приложения на java без пула - то с кодировка все хорошо. Скажу честно, я новичок в работе с БД и плохо понимаю, как это работает, код взял из какого-то урока.

Код, который возвращает в правильной кодировке:
Class.forName("com.mysql.jdbc.Driver");
String s = "jdbc:mysql://jdbc:mysql://ip:3306/name";
Connection c = DriverManager.getConnection(s, "root", "pass");
ResultSet rs = st.executeQuery("select * from menu");


Код, который возвращает в неправильной кодировке:
Context initContext = new InitialContext();
Context envContext  = (Context)initContext.lookup("java:/comp/env");
DataSource dataSource = (DataSource)envContext.lookup("jdbc/testdb");
Connection connection = dataSource.getConnection();
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery("select * from menu");


context.xml:
<Context>
    <Resource name="jdbc/testdb" auth="Container"
        type="javax.sql.DataSource" username="root" password="pass"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://ip:3306/name"
        maxActive="10" maxIdle="4" />
</Context>


web.xml:
<resource-ref>
		<description>DB Connection</description>
		<res-ref-name>jdbc/name</res-ref-name>
		<res-type>javax.sql.DataSource</res-type>
		<res-auth>Container</res-auth>
</resource-ref>
  • Вопрос задан
  • 3130 просмотров
Решения вопроса 1
@bobzer
Java EE Developer
Попытайтесь указать кодировку в url соединения в context.xml следующим образом:
url="jdbc:mysql://ip:3306/name?useUnicode=true&amp;characterEncoding=UTF-8"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы