Foros del Web » Programando para Internet » PHP »

Probelmas al trabajar palabras con tildes

Estas en el tema de Probelmas al trabajar palabras con tildes en el foro de PHP en Foros del Web. Buenas tardes, muchas gracias por pasar tengo un problema no se si esté bien que lo deje en la categoría de php o debe ser ...
  #1 (permalink)  
Antiguo 19/10/2017, 15:30
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 8 meses
Puntos: 2
Pregunta Probelmas al trabajar palabras con tildes

Buenas tardes, muchas gracias por pasar tengo un problema no se si esté bien que lo deje en la categoría de php o debe ser en la mysql, el problema consiste en que a la hora de guardar ciertas palabras en la base de datos y estas palabras llevan tildes se guardan sin problema pero si por ejemplo la palabra es árbol la guarda como árbol eso no es problema ya que a la hora de hacer una consulta la palabra se ve bien escrita la cuestión es que debo por ejemplo hacer alguna lista y ahí es donde el poblema sucede por ejemplo tengo estas palabras:

1. aciclovir
2. ácido
3. alaja
4. árbol
5. armario

Si ven están ordenadas alfabeticamente pero la cuestion es que realmente las palabras con la a tildada se guardan con á entonces al hacer el ordenamiento me quedan de la siguiente manera:

1. ácido
2. árbol
3. aciclovir
4. alaja
5. armario

Entonces el orden falla

Cuando ingreso un dato desde la página web utilizo lo siguiente:

Código PHP:
Ver original
  1. $Palabra= htmlentities($_POST['Palabra'], ENT_QUOTES,'UTF-8');

Según leí utilizo el htmlentities para convertir cualquier caracter html a su entidad eso con el fin de evitar que escriban algún código malicioso en mi campo de texto, la cuestion es que no me quedan ordenados mis datos de forma correcta a la hora de hacer la consulta con ORDER BY, no se si logré explicarme, gracias.
  #2 (permalink)  
Antiguo 19/10/2017, 17:09
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.139
Antigüedad: 13 años, 8 meses
Puntos: 171
Respuesta: Probelmas al trabajar palabras con tildes

revisa el cojetamiendo/codificacion de tu base de datos y tablas, debe ser UTF8, al igual que el html en la etiqueta META, si usas ya html5 no debes hacer este paso, pero si usas codificación html4 aun, debes establecerlo..
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #3 (permalink)  
Antiguo 19/10/2017, 18:55
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Probelmas al trabajar palabras con tildes

La finalidad de htmlentities() nunca fue seguridad, sino asegurar que las cosas se muestren correctamente en pantalla... y estamos hablando de hace milenios, cuando todos usábamos un solo juego de caracteres, equivalente a ANSI o ISO-8859-1, ahora con UTF8 y UTF16 eso ya no es necesario.

Entonces, ya no debes usar htmlentities(), pero sí te recomiendo buscar más información sobre seguridad.
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 20/10/2017, 05:42
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Probelmas al trabajar palabras con tildes

Cita:
Iniciado por petit89 Ver Mensaje
revisa el cojetamiendo/codificacion de tu base de datos y tablas, debe ser UTF8, al igual que el html en la etiqueta META, si usas ya html5 no debes hacer este paso, pero si usas codificación html4 aun, debes establecerlo..
Muchas gracias los cotejamientos del HTML y de la base de datos son utf 8
  #5 (permalink)  
Antiguo 20/10/2017, 05:47
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Probelmas al trabajar palabras con tildes

Cita:
Iniciado por Triby Ver Mensaje
La finalidad de htmlentities() nunca fue seguridad, sino asegurar que las cosas se muestren correctamente en pantalla... y estamos hablando de hace milenios, cuando todos usábamos un solo juego de caracteres, equivalente a ANSI o ISO-8859-1, ahora con UTF8 y UTF16 eso ya no es necesario.

Entonces, ya no debes usar htmlentities(), pero sí te recomiendo buscar más información sobre seguridad.
Muchas gracias por la explicación yo recuerdo haber leído que debía usar htmlentities para evitar que utilizarán código de Javascript ya que al usarlo debían poner las etiquetas <script> y al usar el htmlentities se convertían los valores mayor que y menor que en sus entidades y así el posible código malicioso no se ejecutaba. Mi problema es que ya llevo más de 2000 registros ingresado a la base de datos con ese problema de que se cambiaron las tildes.
  #6 (permalink)  
Antiguo 20/10/2017, 09:59
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Probelmas al trabajar palabras con tildes

Si te preocupa la seguridad, entonces revisa esto: http://www.forosdelweb.com/f18/aport...ar-xss-948577/

Para dejar de usar completamente htmlentities() deberías sanear la entrada de datos eliminando caracteres no permitidos, de acuerdo al tipo de campo.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 20/10/2017, 13:16
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Probelmas al trabajar palabras con tildes

Muchas gracias por el código de seguridad que compartiste, lstimosamente y quite todos los htmlentities de mis campos, aún asi los datos con tildes se siguen guardando con &aacute; etc. me imagino que es porque mi archivo html y mi base de datos tambien estan en UTF-8, pero entonces no puedo solucionar el problema a la hora de listar mis registros ya que no se ordenan de forma adecuada.
  #8 (permalink)  
Antiguo 23/10/2017, 10:04
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Probelmas al trabajar palabras con tildes

El problema es que ya guardaste la información con entidades html en la base de datos, necesitarás hacer un script para recorrer todo y reemplazar con los caracteres reales.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: ordenamiento, php+bd+mysql, tildes
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 21:41.