special - unicode characters java
Diferencia en URL decodificar/codificar UTF-8 entre Java y JS/AS3(¡error !?) (3)
He estado luchando con este problema durante horas y horas ... Mi problema fue una llamada de JQuery Ajax como:
return $.ajax({
url: ''/author!getAuthorContent.action'',
type: ''GET'',
data : {author:name, ''content_type'': ct || ''all'', ''start'': start || 0}
});
''nombre'' es una Cadena que contiene caracteres especiales como Jérôme-Serrano
Por alguna razón, la forma en que JS / JQuery codificaba este tipo de caracteres especiales era incompatible y no pude decodificarla en Java BackEnd ...
La solución fue:
- Codificar en el lado JS utilizando
var econded = encodeURIComponent(name);
- Decodifícalos en el lado de Java usando
String decoded = java.net.URLDecoder.decode(econded ,"UTF-8");
algunos refegences: http://www.programering.com/a/MjN2ADOwATg.html http://www.theerrormessage.com/2013/10/weird-characters-transmitted-to-and-from-server-through-jquery- ajax-call /
Tengo una URL de problema decodificando una cadena UTF-8 en Java que está codificada con Javascript o Actionscript 3. He configurado un caso de prueba de la siguiente manera:
La cadena en cuestión es Produktgröße
Cuando codifico con JS / AS3 obtengo la siguiente cadena:
escape(''Produktgröße'')
Produktgr% F6% DFe
Cuando desapego esto con JS no obtengo ningún cambio
unescape(''Produktgr%F6%DFe'')
Produktgr% F6% DFe
Entonces, con esto, supongo que JS no está codificando la cadena correctamente?
La siguiente JSP produce esta salida
<%@page import="java.net.URLEncoder"%>
<%@page import="java.net.URLDecoder"%>
<%=(URLDecoder.decode("Produktgr%F6%DFe","UTF-8"))%><br/>
<%=(URLEncoder.encode("Produktgröße","UTF-8"))%><br/>
<%=(URLEncoder.encode("Produktgröße"))%><br/>
<%=(URLDecoder.decode(URLEncoder.encode("Produktgröße")))%><br/>
<%=(URLDecoder.decode(URLEncoder.encode("Produktgröße"),"UTF-8"))%><br/>
Produktgr? E
Produktgr% C3% B6% C3% 9Fe
Produktgr% C3% B6% C3% 9Fe
Produktgröße
Produktgröße
¿Alguna idea de por qué estoy teniendo esta disparidad con los idiomas y por qué JS / AS3 no se está comportando como esperaba?
Gracias.
Javascript es una URL que codifica su cadena usando Latin-1 charset. Java es una URL que lo codifica utilizando UTF-8 .
La codificación URL realmente está reemplazando los caracteres / bytes que no reconoce. Por ejemplo, incluso si tuviera que quedarse con los caracteres ASCII, (
se codificaría como %28
Tiene el problema adicional de los juegos de caracteres cuando comienza a usar caracteres que no son ASCII (cualquier cosa de más de 7 bits).
escape es una función obsoleta y no codifica correctamente los caracteres Unicode. Utilice encodeURI o encodeURIComponent , este último probablemente sea el método más adecuado para sus necesidades.