utf8 special example escape characters java javascript encoding unicode-escapes

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.