Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

809
Vistas
UTF-8 no funciona en la aplicación Java que se ejecuta en el servidor Tomcat

Estoy trabajando en una aplicación Java. Necesito obtener la codificación UTF-8 en mi aplicación web Java para admitir texto en bengalí (বাংলা). He hecho lo siguiente:

Servidor de Tomcat.xml

 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" /> <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" /> <Connector protocol="AJP/1.3" address="::1" port="8009" redirectPort="8443" URIEncoding="UTF-8" />

JVM defaultCharset en el archivo catalina.bat

 set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8

propiedades en application.properties

 spring.datasource.url=jdbc:mysql://localhost:3306/database_name?useUnicode=true\&characterEncoding=UTF-8 spring.datasource.tomcat.connection-properties=useUnicode=true;characterEncoding=UTF-8 spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true spring.http.encoding.force=true server.tomcat.uri-encoding=UTF-8 spring.webflux.multipart.headers-charset=UTF-8 spring.thymeleaf.encoding=UTF-8

metaetiqueta en archivo html

 <!doctype html> <html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security"> <head> <meta charset="utf-8"> </head> <body> </body> </html>

compatibilidad con utf-8 en la etiqueta de formulario

 <form enctype="multipart/form-data" accept-charset="UTF-8" action="#" th:action="@{/create}" th:object="${object}" th:method="POST"> <div class="form-group"> <label for="name" class="col-form-label">Name</label> <input type="text" class="form-control" id="name" name="name" th:field="*{name}" placeholder="Enter Name"> </div> <div class="form-group"> <label for="photo">Photo</label> <input type="file" class="form-control-file" id="photo" name="photo"/> </div> <div> <button class="btn" type="submit">Submit</button> </div> </form>

Configuración de MySQL (mi.ini)

 [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4

propiedades mysql:

 Database: Default collation: utf8mb4_0900_ai_ci Default charactterset: utf8mb4 Table: Table collation: utf8mb4_0900_ai_ci Column: Type: varchar(255) Character Set: utf8mb4 Collation: utf8mb4_0900_ai_ci

Configuración:

  • java 11.0.2
  • gato 8.5
  • MySQL 8.0.16
  • Arranque de primavera 2.2.4
  • Experto 3.8.1
  • Windows Server 2019 Standard (Producción) + Windows 10 Home (Desarrollo)

Cuando envío un formulario con valor আনোয়ার , se guarda como আনোয়ার

¿Como puedó resolver esté problema?

Cuando ejecuto la aplicación desde eclipse, funciona bien. Pero cuando el archivo war se implementa en el servidor Tomcat, no funciona.

Probé el siguiente código. Imprime আনোয়ার en el archivo tomcat8-stdout. Así que creo que ocurre un problema al transferir datos del navegador al servidor, del servidor a la base de datos está bien.

 @PostMapping("/create") public String create(@ModelAttribute("object") Object object, @RequestParam("photo") MultipartFile photo) throws IOException { System.out.println(object.getName()); return "redirect:/index"; }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

La codificación de los parámetros POST no se establece en el nivel del Connector , sino en el objeto ServletRequest .

Tomcat proporciona un filtro para configurarlo, como se explica en la documentación .

Agregue esto a su archivo web.xml:

 <filter> <filter-name>setCharacterEncodingFilter</filter-name> <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>setCharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
over 4 years ago · Santiago Trujillo Denunciar

0

¿Intentó configurar lo siguiente en server.xml para tomcat para permitir caracteres escapados en las URL?

 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" relaxedPathChars="[]|" relaxedQueryChars="&#x5B;&#x5D;&#x7C;&#x7B;&#x7D;&#x5E;&#x5C;&#x60;&#x22;&#x3C;&#x3E;" redirectPort="8443" />
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda