0
votes

First of all, i know there are bunch of topic such mine, but I was looking for solution in stackoverflow and i couldn't come up with solution. My problem is charset encoding in Spring MVC. In my case I'm talking about polish letters like ę,ó,ż etc.

I've tried everything, starting from CharacterEncodingFilter, setting UTF-8 encoding in maven pom.xml, setting UTF-8 encoding and Content-type also UTF-8 in ThymeleafViewResolver and TemplateResolver.

I can't manage to make it working with polish signs. What is important, my html pages include polish signs, but when i sent form data in post method of course, it translate utf-8 signs to ISO-8859-1.

So when i send data like this one: Żyrardów

I data from request in Controller like this one: Żyrardów

Is there any solution apart from converting signs on every request in my controller?

new String(ppForm.getCity().getBytes("ISO-8859-1"), "utf-8")

Thanks in advance, i hope someone can provide solution.

@UP I've also set URIEncoding in tomcat server.xml file, but it didn't work.

  <Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" 
            URIEncoding="UTF-8" />

   <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />
1

1 Answers

0
votes

try like this :

(web.xml)

<!-- encoding filter -->
<filter>
    <filter-name>encodingFilter</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>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

(thymeleaf settings)

<!-- thymeleaf settings -->
<beans:bean id="templateResolver"
    class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
    <beans:property name="prefix" value="/WEB-INF/views/" />
    <beans:property name="suffix" value=".html" />
    <beans:property name="templateMode" value="HTML5" />
    <beans:property name="cacheable" value="false"></beans:property>
    <beans:property name="characterEncoding" value="UTF-8"></beans:property>
    <beans:property name="order">
        <beans:value>1</beans:value>
    </beans:property>
</beans:bean>

<beans:bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
    <beans:property name="templateResolver" ref="templateResolver" />
    <beans:property name="additionalDialects">
        <beans:set>
            <beans:bean
                class="org.thymeleaf.extras.springsecurity4.dialect.SpringSecurityDialect"></beans:bean>
        </beans:set>
    </beans:property>
</beans:bean>

<beans:bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
    <beans:property name="templateEngine" ref="templateEngine" />
    <beans:property name="characterEncoding" value="UTF-8"></beans:property>
</beans:bean>

don`t works. you add your code and comment me.