Use arquivos JSP com caracteres chineses no FreeBSD com porcentagem de codificação

0

Estamos tendo o Tomcat 8.0.50 em frente ao Apache2 em uma máquina FreeBSD 11.2. A raiz da Web contém arquivos html e jsp com caracteres chineses como 产品.html . O Apache pode atender bem esses arquivos estáticos. Mas o Tomcat lança um erro em todos os arquivos que contenham caracteres chineses.

Exemplo : test企test.jsp resultam em HTTP Status 404 - /test%E4%BC%81test.jsp

Não importa se o arquivo no sistema de arquivos é percentualmente codificado. Quando eu crio um arquivo físico chamado test%E4%BC%81test.jsp , também recebo 404 não encontrado. O problema é certo no lado de Tomcats desde que eu contornei o proxy reverso de Apache2 para testar o propósito.

O que eu já tentei

no server.xml:

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

no web.xml:

<init-param>
         <param-name>fileEncoding</param-name>
         <param-value>UTF-8</param-value>
    </init-param>

bin / setenv.sh (Testando se o inglês resolve o problema)

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LANGUAGE=en_US.UTF-8

bin / catalina.sh

CATALINA_OPTS="$JPDA_OPTS $CATALINA_OPTS -Dfile.encoding=UTF-8"
[...]
JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dfile.encoding=UTF-8 -Djava.file.encoding=UTF-8"

Defina o seguinte para default em /etc/login.conf :

:charset=UTF-8:\ 
:lang=de_DE.UTF-8:

Crie um jsp personalizado para listar todos os arquivos no diretório onde os jsps com caracteres especiais estão localizados:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,javax.mail.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
        <jsp:scriptlet>
            File directory = new File("<path-to-jsp-www>");
        File[] list = directory.listFiles();
        pageContext.setAttribute("list", list);

    </jsp:scriptlet>

<ul>
<c:forEach items="${list}" var="item">
    <li>${item.getAbsolutePath()}</li>
</c:forEach>
</ul>
</html>

Isso me deu uma lista de todos os arquivos em que todos os caracteres chineses foram removidos por

    
por Daniel 28.11.2018 / 15:25

0 respostas