Проблема кодировки символов с 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

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

3 ответа

Делать следующее

1) HTML-код

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

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

3) Tomcat Server server.xml - в тэг Connector добавлен атрибут "URIEncoding" как

<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"

Вы выполнили эти шаги?

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

Скопировано ниже:

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

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

  1. Установите URIEncoding="UTF-8" в вашем файле server.xml. Ссылки: HTTP-коннектор, AJP-коннектор.

  2. Используйте фильтр кодировки символов с кодировкой по умолчанию, установленной в UTF-8

  3. Измените все ваши JSP, чтобы включить имя набора символов в их contentType.

    Например, используйте <%@page contentType="text/html; charset=UTF-8" %> для обычных страниц JSP и <jsp:directive.page contentType="text/html; charset=UTF-8" /> для страниц в синтаксисе XML (он же JSP Documents).

  4. Измените все свои сервлеты, чтобы задать тип содержимого для ответов и включить имя набора символов в тип содержимого UTF-8.

    использование response.setContentType("text/html; charset=UTF-8") или же response.setCharacterEncoding("UTF-8"),

  5. Измените любые библиотеки создания контента, которые вы используете (Velocity, Freemarker и т. Д.), Чтобы использовать UTF-8 и указать UTF-8 в типе контента ответов, которые они генерируют.

  6. Отключите все клапаны или фильтры, которые могут считывать параметры запроса, прежде чем ваш фильтр кодировки символов или страница JSP сможет установить кодировку UTF-8. Для получения дополнительной информации см. http://www.mail-archive.com/users@tomcat.apache.org/msg21117.html.

Попробуйте установить для параметра URIEncoding вашего коннектора tomcat (в файле 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"/>
Другие вопросы по тегам