Почему мой стек Java / Spring / Tomcat переводит неанглийские символы в два отдельных символа? - PullRequest
1 голос
/ 24 января 2011

Когда я захожу на URL http://localhost:8080/myapp/search?q=jalape%C3%B1os&p=1 и использую request.getParamter ("q"), строка становится jalapeà ± os вместо jalapeños.Очевидно, это проблема.

Я запускаю Spring 3 с tomcat, все "говорит", что это происходит как UTF8;что означает, что он должен отображаться как jalapeños.

Помощь?!

Ответы [ 3 ]

4 голосов
/ 24 января 2011

Вам нужно настроить tomcat примерно так

<Connector port="8080" maxHttpHeaderSize="8192"
 maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
 enableLookups="false" redirectPort="8443" acceptCount="100"
 connectionTimeout="20000" disableUploadTimeout="true" 
 compression="on" 
 compressionMinSize="128" 
 noCompressionUserAgents="gozilla, traviata" 
 compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript"
 URIEncoding="UTF-8"
/>

Примечание: URIEncoding UTF8

См. Также

4 голосов
/ 24 января 2011

Проверьте кодировку кота. Согласно спецификации сервлета (см. http://wiki.apache.org/tomcat/FAQ/CharacterEncoding), по умолчанию используется не UTF-8, а ISO-8859-1

Также взгляните на http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q3. Это вполне может решить ваши проблемы.

0 голосов
/ 24 января 2011

Единственная возможная причина - неверная конфигурация UTF8 в вашей цепочке программного обеспечения.

Повторная проверка:
- Конфигурация сервера для этого хоста - пружинная конфигурация - Java Config для веб-приложения - И, конечно, ваши метаданные в заголовке веб-страницы:

<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...