Проблема кодировки символов с Tomcat

Происходит странное кодирование символов. Я использую JSP (JSTL) и Struts с Tomat 6.

У меня есть кодировка JSP-страницы как таковая:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

Проблема заключается в том, когда я пытаюсь передать URL-адрес с использованием encodeURI как таковой:

<script type="text/javascript">
          $('#mailer_filter').change(function(){
            var val = $(this).val();
            console.log(val);
            console.log(escape(val));
            console.log(encodeURI(val));
            location.href = 'mailList.a?' + encodeURI($(this).val());
          });
        </script>

параметр действия (конец Java) выглядит так:

Gaz Métro

однако на переднем конце это отображается как:

Gaz Métro

это правильный путь. Что я могу с этим поделать ??

 atk18 июн. 2012 г., 21:41
Где вы видите значение в конце Java? В лог-файл? Если это так, возможно, редактор, который вы используете для чтения файла журнала, не ожидает UTF-8 ...

Ответы на вопрос(3)

http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q8

Copied below:

Использование UTF-8 в качестве кодировки вашего персонажа для всех - безопасная ставка. Это должно работать практически для любой ситуации.

Чтобы полностью перейти на использование UTF-8, вам необходимо внести следующие изменения:

Set URIEncoding="UTF-8" on your in server.xml. References: HTTP Connector, AJP Connector.

Use a character encoding filter with the default encoding set to UTF-8

Change all your JSPs to include charset name in their contentType.

For example, use <%@page contentType="text/html; charset=UTF-8" %> for the usual JSP pages and <jsp:directive.page contentType="text/html; charset=UTF-8" /> for the pages in XML syntax (aka JSP Documents).

Change all your servlets to set the content type for responses and to include charset name in the content type to be UTF-8.

Use response.setContentType("text/html; charset=UTF-8") or response.setCharacterEncoding("UTF-8").

Change any content-generation libraries you use (Velocity, Freemarker, etc.) to use UTF-8 and to specify UTF-8 in the content type of the responses that they generate.

Disable any valves or filters that may read request parameters before your character encoding filter or jsp page has a chance to set the encoding to UTF-8. For more information see http://www.mail-archive.com/[email protected]/msg21117.html.

 18 июн. 2012 г., 23:59
Я видел6 ответственным за это в «дикой природе», используя WebSphere Portal Server. Попробуйте отследить каждый запрос, и еслиanything пытается прочитать параметр запроса до того, как будет установлена правильная кодировка, тогда значение будет считано как ISO8859-1 (если я правильно помню, это указано в спецификации сервлета).
 OakvilleWork18 июн. 2012 г., 23:35
Большое спасибо, Пол ... Я перепробовал все вышеперечисленное ... все еще не повезло, я пытался найти решение, я даже видел решения, предложенные для кодирования в UTF-8 вручную! Я не хочу использовать эту опцию, хотя ... в основном этот пост похож на мою проблему:stackoverflow.com/questions/6213377/…  однако эти предложения также не работают.

1) HTML-код

 <meta contentType="text/html; charset="UTF-8"/>

2) Настройка браузера для IE  Вид - Кодировка - Юникод (UTF-8)

3) Tomcat Server  server.xml - В тег Connector добавлено & quot; URIEncoding & quot; приписывать как

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

catalina.sh/catalina.bat - добавлено следующее

set JAVA_OPTS=--Xms256m -Xmx1024m -Xss268k -server -XX:MaxPermSize=256m -XX:-UseGCOverheadLimit -Djava.awt.headless=true -Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8

set CATALINA_OPTS=-Dfile.encoding="UTF-8"

4) Тип ответа MIME должен быть «application / x-www-form-urlencoded»

 03 февр. 2013 г., 19:19
Я искал день, чтобы разобраться с этим. На Jetty все работало нормально, но при развертывании на томате у меня пропадали умлауты. Спасибо!

at (в файле server.xml) значение UTF-8:

Например.:

<Connector port="8080" maxHttpHeaderSize="8192"
           maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
           enableLookups="false" redirectPort="8443" acceptCount="100"
           connectionTimeout="20000" disableUploadTimeout="true"
           URIEncoding="UTF-8"/>
 OakvilleWork18 июн. 2012 г., 21:43
спасибо за предложение ... Я попытался это до публикации, не решил проблему.
 19 июн. 2012 г., 02:16
Это не имеет ничего общего с выходной кодировкой. Это повлияет только на значения, считанные с клиента, и только для значений параметров GET.

Ваш ответ на вопрос