Acentos y ñ al usar WebScripts
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-28-2012 08:29 AM
Hola.
Tengo una aplicación en Java que a través de llamadas a los webscripts de Alfresco realiza ciertas acciones en el mismo.
Algunas de ellas son el alta de personas y de comunidades.
El caso es que cuando añado personas o comunidades y estas llevan algún acento o ñ en la plataforma no se añade correctamente.
El código Java que utilizo es este:
He puesto lo del UTF-8 en varios sitios para forzarle pero aún asi nada, me salen cosas de este estilo: Espa�ol, Jos�.
He buscado por foros y demás y he probado lo siguiente, pero en ningún caso funciona:
1- En el setenv.bat en tomcat/bin tengo lo siguiente:
2- En el fichero tomcat/conf/web.xml, las primeras líneas como:
3- En el fichero tomcat/conf/server.xml el siguiente código:
He puesto trazas en mi Java y los datos que salen hacia Alfresco salen bien:
Pero el servidor me responde ya con el encoding mal:
Seguiré buscando más información a ver si consigo algo. Mientras tanto, ¿a alguien le ha pasado algo parecido o sabe dónde podría estar el problema?
Muchas gracias!
Tengo una aplicación en Java que a través de llamadas a los webscripts de Alfresco realiza ciertas acciones en el mismo.
Algunas de ellas son el alta de personas y de comunidades.
El caso es que cuando añado personas o comunidades y estas llevan algún acento o ñ en la plataforma no se añade correctamente.
El código Java que utilizo es este:
String alfrescoUser = "usr0000000123";String alfrescoFirstName = "José Miguel";String alfrescoLastName = "Español";String alfrescoEmail = "pruebas@mail_pruebas123.com"; JSONObject personaJSON = new JSONObject();personaJSON.put("userName", alfrescoUser);personaJSON.put("firstName", alfrescoFirstName);personaJSON.put("lastName", alfrescoLastName);personaJSON.put("email", alfrescoEmail); postRequest = new HttpPost("http://'+ host + ":" + port + "/alfresco/service/api/people?alf_ticket=" + alfTicket); input = new StringEntity(personaJSON.toString());input.setContentType("application/json; charset=UTF-8");input.setContentEncoding("UTF-8");postRequest.setHeader("Content-Type","application/json; charset=UTF-8");postRequest.setEntity(input);response = httpClient.execute(postRequest);
He puesto lo del UTF-8 en varios sitios para forzarle pero aún asi nada, me salen cosas de este estilo: Espa�ol, Jos�.
He buscado por foros y demás y he probado lo siguiente, pero en ningún caso funciona:
1- En el setenv.bat en tomcat/bin tengo lo siguiente:
set JAVA_HOME=C:\Alfresco\java set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8 -Djava.file.encoding=UTF-8 -Duser.languaje=es -Duser.region=ES -XX:PermSize=256mset CATALINA_OPTS=%CATALINA_OPTS% -Dfile.encoding="UTF-8"
2- En el fichero tomcat/conf/web.xml, las primeras líneas como:
<servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>fileEncoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
3- En el fichero tomcat/conf/server.xml el siguiente código:
<Connector port="8080" URIEncoding="UTF-8" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
He puesto trazas en mi Java y los datos que salen hacia Alfresco salen bien:
Datos de la persona : {"password":"nadadenada","userName":"usuario_pruebas04","email":"pruebas@mail_pruebas123.com","firstName":"Usuario","lastName":"Pruebás"}Codigo: 200
Pero el servidor me responde ya con el encoding mal:
Respuesta del servidor …. << Response: HTTP/1.1 200 OK{ "url": "\/alfresco\/service\/api\/person\/usuario_pruebas06", "userName": "usuario_pruebas06", "enabled": true, "firstName": "Usuario", "lastName": "Prueb\ufffds", "jobtitle": null, "organization": null, "location": null, "telephone": null, "mobile": null, "email": "pruebas@mail_pruebas123.com", "companyaddress1": null, "companyaddress2": null, "companyaddress3": null, "companypostcode": null, "companytelephone": null, "companyfax": null, "companyemail": null, "skype": null, "instantmsg": null, "userStatus": null, "userStatusTime": null, "googleusername": null, "quota": -1, "sizeCurrent": 0, "emailFeedDisabled": false, "persondescription": null}
Seguiré buscando más información a ver si consigo algo. Mientras tanto, ¿a alguien le ha pasado algo parecido o sabe dónde podría estar el problema?
Muchas gracias!
Labels:
- Labels:
-
Archive
4 REPLIES 4
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-28-2012 02:07 PM
Buenas,
Si de tu cliente java la codificación es correcta, está claro que el problema está en la codificación de la base de datos ¿no?
Podrías probar a definir forzosamente el mapa de caracteres de la base de datos mediante la cadena de conexión que se define en el alfresco-global.properties
db.url=jdbc:mysql://your-host:3306/alfresco?useUnicode=yes&characterEncoding=UTF-8
saludos!
Si de tu cliente java la codificación es correcta, está claro que el problema está en la codificación de la base de datos ¿no?
Podrías probar a definir forzosamente el mapa de caracteres de la base de datos mediante la cadena de conexión que se define en el alfresco-global.properties
db.url=jdbc:mysql://your-host:3306/alfresco?useUnicode=yes&characterEncoding=UTF-8
saludos!
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-29-2012 12:30 AM
Hola.
La cuestión es que cuando realizo altas desde la propia web si se me guardan bien los acentos, ñ y demás, además la BBDD que uso es Oracle.
Ahora lo volveré a mirar porque aunque la cadena JSON la pinta bien luego parece que el input (cuando hago postRequest.setEntity(input); )destroza este tipo de caracteres por lo que quizá sea tema de mi JVM… Ahora cuando conecte el portátil sigo investigando.
Gracias por contestar
La cuestión es que cuando realizo altas desde la propia web si se me guardan bien los acentos, ñ y demás, además la BBDD que uso es Oracle.
Ahora lo volveré a mirar porque aunque la cadena JSON la pinta bien luego parece que el input (cuando hago postRequest.setEntity(input); )destroza este tipo de caracteres por lo que quizá sea tema de mi JVM… Ahora cuando conecte el portátil sigo investigando.
Gracias por contestar

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-29-2012 03:19 AM
Sigo haciendo pruebas y de momento nada funciona.
En el Eclipse he probado a poner todo en UTF-8 y en "Run configurations" igualmente en los parámetros de la JVM tengo un -Dfile.encoding=UTF-8.
Además he forzado el código a que meta en UTF-8 y sigue igual…
Ya no sé ni por donde mirar 😕
En el Eclipse he probado a poner todo en UTF-8 y en "Run configurations" igualmente en los parámetros de la JVM tengo un -Dfile.encoding=UTF-8.
Además he forzado el código a que meta en UTF-8 y sigue igual…
postRequest.setHeader("Content-Type","application/json; charset=UTF-8");postRequest = new HttpPost("http://'+ host + ":" + port + "/alfresco/service/api/people?alf_ticket=" + finder.getValue());String persona = "{\"password\":\"welcome\",\"userName\":\"usr_0023\",\"email\":\"pruebas@mail_pruebas123.com\",\"firstName\":\"Usuário\",\"lastName\":\"Pruebás\"}";byte[] utf81 = persona.getBytes("UTF-8");String personaUTF = new String(utf81, "UTF8");System.out.print("Persona UTF : " + personaUTF);input = new StringEntity(personaUTF); input.setContentEncoding("UTF-8");input.setContentType("application/json;charset=UTF-8");postRequest.setEntity(input);response = httpClient.execute(postRequest);response.addHeader("Content-Type","application/json; charset=UTF-8");
Ya no sé ni por donde mirar 😕

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-05-2024 03:38 PM
prueba encriptando los nombres , busca un forma de encriptar y desencriptar algo asi como base64 y asi te quitas del lio de los caracteres especiales de el español ... luego al recibir vuelves a desencriptar y muestras el dato al cliente.
