Foros del Web » Programación para mayores de 30 ;) » Java »

Como hacer expresion regular para equivalencia a la eñe

Estas en el tema de Como hacer expresion regular para equivalencia a la eñe en el foro de Java en Foros del Web. Hola a tod@s, quedria hacer una expresion regular para que en un replaceAll(), cambie las eñe, acentos y demas que se forman simbolos raros al ...
  #1 (permalink)  
Antiguo 27/05/2018, 04:20
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 11 años, 1 mes
Puntos: 1
Como hacer expresion regular para equivalencia a la eñe

Hola a tod@s,

quedria hacer una expresion regular para que en un replaceAll(), cambie las eñe, acentos y demas que se forman simbolos raros al pasarlos por Get.
Por ejemplo el simbolo raro es %FA, entonces al encontrar equivalencias lo cambie por la ñ.
Yo probe con la expresion regular [%FA] pero no esta bien definida por lo visto.

Y no es problema de codificacion UTF-8 y demas , porque por post va todo perfectamente, tengo todo en UTF-8, archivos Java, XML, base de datos, Tomcat.

Agradezco mucho la ayuda,

Saludos
  #2 (permalink)  
Antiguo 28/05/2018, 04:45
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 3 meses
Puntos: 188
Respuesta: Como hacr expresion regular para equivalencia a la eñe

¿Y cual es el código que ejecutas al final?

¿Te estás acordando de reasignar la salida del replaceAll a una variable?
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 28/05/2018, 07:24
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: Como hacr expresion regular para equivalencia a la eñe

Si lo asigno a una variable, para despues mostrar esa variable en un input con ayuda de DOM.

recojo los datos pasados por GET. Por POST no hay problema, pero por GET no hay forma que los envie con simbolos.

He probado a usar :
Código:
String Nombre = java.net.URLDecoder.decode(nombre, "UTF-8");
Ó incluso java.net.URLEncoder(url,"UTF-8") para codificar la url antes de ser pasada por GET desde el JSP al servlet, pero nada de ninguna de las dos formas.

Por eso ya quiero hacerlo remplazando directamente los simbolos por sus letras que les corresponderian.
Por eso preguntaba cual sería la expresión regular para ese simbolo, entiendo que esta bien expresada por cuando me preguntas a ver si no esta guardada en una variable.

No se más por donde estará el problema con el uso de replaceAll().

Gracias por las ideas.

Saludos
  #4 (permalink)  
Antiguo 30/05/2018, 05:27
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: Como hacr expresion regular para equivalencia a la eñe

Por favor nadie a tenido que solucionar un problema asi? con lo común que suele ser que en la url por Get vayan caracteres raros por la mala decodificación de estos....nadie a tenido que remplazar esos caracteres raros por sus caracteres en Castellano?

Por favor me sería de gran ayuda que lo compartiese :)
  #5 (permalink)  
Antiguo 31/05/2018, 08:29
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: Como hacr expresion regular para equivalencia a la eñe

Buenas,

Normalmente nunca paso datos de un formulario directamente por GET, pero cuando no he tenido otra opcion siempre me ha functionado perfectamente haciendo URLencoding al envio y URLdecoding en la recepcion.

http://www.baeldung.com/java-url-encoding-decoding


Aprovecho para recomiendarte escribir un test unitario para validar el tratamiento.

En pseudocodigo Java:
Código Java:
Ver original
  1. String stringToTest = "cadena con caracteres extranos";
  2. String encodedString = URLEncoder.encode(stringToTest , StandardCharsets.UTF_8.toString());
  3. String decodedString = URLDecoder.decode(encodedString , StandardCharsets.UTF_8.toString());
  4. assertEquals(stringToTest, decodedString);


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #6 (permalink)  
Antiguo 04/06/2018, 06:57
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: Como hacer expresion regular para equivalencia a la eñe

Muchas gracias por responder :)

He probado como has comentado, bueno ya lo habia probado antes con Encode y Decode, pero no me ha funcionado en ninguna de las dos ocasiones.
La url la codifico desde un jsp que se lo paso a otro jsp para que muestre los datos de cada variable que va en la url. Por ello en la segunda jsp que decodifica, no puedo decodificar la url, voy decodificando variable por variable y esto no esta funcionando.
El problema que encuentro es que la url codificada desde el primer jsp le llega al segundo jsp tal que asi:
http://localhost:8080/BackEnd/Formul...%27ñññññ%27%26
Por lo que parece que los simbolos ?, =, & tipico de delimitadores en las url, los codifica mal.
También se puede observar que las eñes ya las codifica bien!
Entiendo que si despues en el segundo jsp que recibe la url codificada la consiguiera decodificar esos delimitadores se mostrarian correctamente?
Y siendo así como recojo toda la url?, existe un metodo al estilo javascript de window.location que recoje la url pasada por GET?


Gracias de nuevo por la ayuda :)

Saludos
  #7 (permalink)  
Antiguo 04/06/2018, 07:51
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: Como hacer expresion regular para equivalencia a la eñe

También lo que me ocurre, que es un tanto extraño, es que la codificación de los archivos java y jsp los tengo que tener en ISO-8859-1, mientras que Tomcat, web.xml y la BBDD esta en UTF8.
Ahi he probado de todo para tratar de tener todo sincornizado en UTF8, pero los archivos jsp y java si estan en UTF8 cuando envio los datos de ese jsp a un servlet para que guarde los datos en la base de datos, en la servlet los codifica mal y en la base de datos se guardan con simbolos raros. Ahi en la servlet tambien he probado java.lang.URLDecode para cada variable antes de guardar en la base de datos, y nada.En este caso esta todo en UTF-8, archvs java, tomcat y BBDD.

Etiquetas: servlet
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:20.