Кириллица в MySQL + Spring + Hibernate

 
 
 
Сообщения:87
К каким мерам нужно прийти, чтобы обрабатывать кириллицу? Я использую Spring, Hibernate и MySQL. Если я вручную введу в MySQL "Москва", то все окей. А если через метод, то получу '???????'. Вот как выглядит мой root-context:
<?xml  version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:beans="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:jee="http://www.springframework.org/schema/jee"
	xmlns:lang="http://www.springframework.org/schema/lang" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"
	xmlns:cache="http://www.springframework.org/schema/cache" xmlns:task="http://www.springframework.org/schema/task"
	xsi:schemaLocation="
	http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
     http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd     
     http://www.springframework.org/schema/task  http://www.springframework.org/schema/task/spring-task-3.0.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
		http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">



	<context:annotation-config />


	<context:component-scan base-package="net.babobka.blog" />
	<mvc:resources mapping="/resources/**" location="/resources/" />
	<cache:annotation-driven />

	<bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
		<property name="caches">
			<set>
				<bean
					class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"
					p:name="template" />
			</set>
		</property>
	</bean>


	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
		p:location="/WEB-INF/db/jdbc.properties" />

	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close" p:driverClassName="${jdbc.driverClassName}"
		p:url="${jdbc.databaseurl}" p:username="${jdbc.username}" p:password="${jdbc.password}" />
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="configLocation">
			<value>/WEB-INF/db/hibernate.cfg.xml</value>
		</property>
		<property name="configurationClass">
			<value>org.hibernate.cfg.AnnotationConfiguration</value>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">${jdbc.dialect}</prop>
				<prop key="hibernate.show_sql">${jdbc.show_sql}</prop>
				<prop key="hibernate.connection.useUnicode">true</prop>
				<prop key="hibernate.connection.characterEncoding">utf8</prop>
				<prop key="hibernate.connection.charSet">utf8</prop>
			</props>
		</property>
	</bean>




	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>
	<mvc:annotation-driven />
	<tx:annotation-driven />
	<task:annotation-driven />



	<bean id="Backupper" class="net.babobka.blog.controller.Backupper"></bean>

	<bean id="OldDataRemoval" class="net.babobka.blog.controller.OldDataRemoval"></bean>




	<bean id="urlForwardController"
		class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />

	<bean id="tilesConfigurer"
		class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
		<property name="definitions">
			<list>
				<value>/WEB-INF/tiles.xml</value>
			</list>
		</property>
	</bean>

	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.UrlBasedViewResolver">
		<property name="viewClass"
			value="org.springframework.web.servlet.view.tiles2.TilesView" />
	</bean>

</beans>


А вот jdbc.properties:
jdbc.driverClassName= com.mysql.jdbc.Driver
jdbc.dialect=org.hibernate.dialect.MySQLDialect
jdbc.databaseurl=jdbc:mysql://localhost:3306/babobka
jdbc.username=babobka
jdbc.password=1234
jdbc.show_sql=true
Изменен:28 авг 2013 06:41
 
 
Сообщения:1339
character set для таблицы какой стоит?
Попробуйте сделать UTF-8, эта статья может помочь

datatalks.ru - анализ данных, статистика, машинное обучение
 
 
Сообщения:9474
Если бы проблема была в самой таблице или БД, то прямой запрос бы не исправил ситуацию. Проблема либо в кодировке приходящих из формы данных, что решается таким фильтром:
    <filter>
        <filter-name>encoding-filter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encoding-filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
Либо проблема в том как соединение к БД оформлено. Строка должна быть такой:
jdbc:mysql://localhost:3306/databasename?characterEncoding=UTF-8
 
 
Сообщения:6978
Вот это до кучи: http://www.skipy.ru/technics/encodings_webapp.html

С уважением,
Евгений aka Skipy
www.skipy.ru
P.S. Я НЕ решаю задачи ЗА других!
 
 
Сообщения:60
Староверъ:
<filter>
<filter-name>encoding-filter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding-filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

+1
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет