Foros del Web » Programando para Internet » Python »

Problema de enconding....creo

Estas en el tema de Problema de enconding....creo en el foro de Python en Foros del Web. Saludos compañeros, Tengo un problema al hacer una comparación cuando la variable tiene un caracter tilde. Os lo explico mejor con el código: Código: if ...
  #1 (permalink)  
Antiguo 14/11/2011, 11:46
Avatar de wolvelopez  
Fecha de Ingreso: junio-2008
Mensajes: 86
Antigüedad: 15 años, 10 meses
Puntos: 0
Problema de enconding....creo

Saludos compañeros,
Tengo un problema al hacer una comparación cuando la variable tiene un caracter tilde.
Os lo explico mejor con el código:

Código:
if comprobar_categoria(categoria_1):
La variable categoria_1 en este caso tiene el valor: TPV's
¿Sabeis cómo puedo solucionarlo?

Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 14/11/2011, 12:15
Avatar de wilmermorel  
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 30
Antigüedad: 12 años, 8 meses
Puntos: 2
Respuesta: Problema de enconding....creo

Pienso que debes agregar esta linea al principo de tu codigo:
# -*- coding: utf-8 -*-

Código Python:
Ver original
  1. categoria_1 = "TPV's"
  2. print categoria_1 is "TPV's"
  #3 (permalink)  
Antiguo 14/11/2011, 13:10
Avatar de wolvelopez  
Fecha de Ingreso: junio-2008
Mensajes: 86
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema de enconding....creo

La linea ya la tenía puesta y me sigue pasando.
Gracias.
  #4 (permalink)  
Antiguo 14/11/2011, 13:24
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Problema de enconding....creo

Que es lo que hace comprobar_categoria ?
Que error te arroja?
  #5 (permalink)  
Antiguo 15/11/2011, 04:00
Avatar de wolvelopez  
Fecha de Ingreso: junio-2008
Mensajes: 86
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema de enconding....creo

Vale, despues de debuggear bastante me di cuenta de lo siguiente:
Cuando llamo a la funcion comprobar_categoria(categoria_1) con el valor TPV´s me da fallo en la sentencia sql porque se me queda como:
select * from ps_category_lang where name = 'TPV's'

Código:
def comprobar_categoria(cat):
    sql = "select * from ps_category_lang where name ='%s'"  % cat
    resultado = conexion.consulta(sql)
    return resultado
¿Como podría solucionar esto?

Saludos y gracias de antemano.
  #6 (permalink)  
Antiguo 15/11/2011, 08:19
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema de enconding....creo

No uses la sustitución de esa forma. Usa consultas parametrizadas. dado tu cursor, supongamos guardado en la variable cursor, haz:

cursor.execute("select * from ps_category_lang where name = ?", cat)

Las consultas parametrizadas se encargan de que los parámetros se pasen correctamente, evitando problemas como el que estás encontrando. Sin ellas, obtenemos la situación de PHP donde se utilizan cosas como magic_quotes o mysql_real_escape_string. Es mejor dejar que el conector de la base de datos se encargue, ya que seguramente sea más robusto (y eficiente) que cualquier prueba o validación que podamos hacer desde nuestro lado.


Saludos.
  #7 (permalink)  
Antiguo 15/11/2011, 08:32
Avatar de wolvelopez  
Fecha de Ingreso: junio-2008
Mensajes: 86
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema de enconding....creo

Probaré cuando llegue a casa que ahora no puedo.
Saludos y gracias.
  #8 (permalink)  
Antiguo 15/11/2011, 13:28
Avatar de wolvelopez  
Fecha de Ingreso: junio-2008
Mensajes: 86
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema de enconding....creo

No pudo pasar los parámetros a la otra clase porque yo no me encargo de esa clase.
¿No existe manera de hacer otra cosa?

Saludos y gracias de antemano
  #9 (permalink)  
Antiguo 16/11/2011, 05:33
Avatar de wolvelopez  
Fecha de Ingreso: junio-2008
Mensajes: 86
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema de enconding....creo

Al final encontre solucion, no es muy limpia pero me vale momentaneamente .
Es la siguiente:
Código:
 
categoria_1 = nodo[3].text.replace("'","-")
comprobar_categoria(categoria_1)
Antes de llamara a la funcion comprobar_categoria(), hago un replace del caracter ' con el caracter -

Saludos y gracias compañeros.
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 08:10.