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.
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 �
Tags locale java filesystems freebsd