Error al poner una cadena que contenga Ñ o acentos

6,627 views
Skip to first unread message

r3xakead0

unread,
Jun 25, 2008, 1:38:47 PM6/25/08
to Django-es
bueno tengo una duda con respecto al manejo de tipos de cadenas
(string), ya que quiero asignar una frase, pero me manda error. Al
parecer no soporta por defecto caracteres que no sean ascii

result = {
'success': False,
'message': 'El usuario y/o contraseña son incorrectos',
}

e intentado colocar ina "u"adelante de la flase pero igual me sigue
generando el error

r3xakead0

unread,
Jun 25, 2008, 1:40:37 PM6/25/08
to Django-es
bueno tengo una duda con respecto al manejo de tipos de cadenas
(string), ya que quiero asignar una frase, pero me manda error. Al
parecer no soporta por defecto caracteres que no sean ascii

result = {
'success': False,
'message': 'El usuario y/o contraseña son incorrectos',
}

e intentado colocar una "u" adelante de la flase pero igual me sigue
generando el error

Aitor

unread,
Jun 25, 2008, 1:44:01 PM6/25/08
to djan...@googlegroups.com
En cualquier codigo python, si quieres utilizar caracteres "no
estandares", lo arreglas añadiendo en la cabecera (del fichero) la
siguiente linea:
# -*- coding: utf-8 -*-

O cualquier otra codificación que quieras.

Salu2.

r3xakead0

unread,
Jun 25, 2008, 2:00:16 PM6/25/08
to Django-es
lo coloque en esta cabecera pero sale asi

El usuario y\/o contrase\u00c3\u00b1a son incorrectos

Aitor

unread,
Jun 25, 2008, 2:08:29 PM6/25/08
to djan...@googlegroups.com
Tal vez los diccionarios lo único que hacen es adaptarse y cambiar los
iconos por su valor unicode... La verdad lo siento pero mas no puedo
ayudarte, yo lo utilizo en listas, y me funciona.

Salu2.

Mauro Lizaur

unread,
Jun 25, 2008, 2:10:54 PM6/25/08
to djan...@googlegroups.com

probaste escribiendolo asi:

result = {
'success': False,
'message': unicode('El usuario y/o contraseña son incorrectos','utf8'),
}

no es la mejor de las soluciones pero creo que funciona.

saludos

--
JID: lavar...@jabber.org
http://lusers.com.ar/

r3xakead0

unread,
Jun 25, 2008, 2:13:53 PM6/25/08
to Django-es
Si , eso es similar a poner 'u' antes de la frase

pero igual me muestra asi
{"message": "El usuario y\/o contrase\u00c3\u00b1a son incorrectos",
"success": false}
> JID: lavaram...@jabber.orghttp://lusers.com.ar/

"César H. Roldán"

unread,
Jun 25, 2008, 2:29:15 PM6/25/08
to djan...@googlegroups.com
r3xakead0 escribió:

> Si , eso es similar a poner 'u' antes de la frase
>
> pero igual me muestra asi
> {"message": "El usuario y\/o contrase\u00c3\u00b1a son incorrectos",
> "success": false}
>
En DJango terminé usandolo así:

# -*- coding: utf-8 -*-

telefono = models.CharField('Teléfono'.decode('latin-1').encode("utf-8"))

Saludos !

phpleo

unread,
Jun 28, 2008, 3:05:57 PM6/28/08
to Django-es
En la lista de emails de python hay esto:

http://mail.python.org/pipermail/python-list/2007-January/424256.html
>>> s = u"© and many more..."
>>> s.encode('ascii', 'xmlcharrefreplace')
'© and many more...'

Lo que te convierte las ñ y sus acentos en entidades html.

Salu2.

Carlos Yoder

unread,
Jul 17, 2008, 5:40:44 AM7/17/08
to Django-es
Hola!

Quizás no sea del todo un error, ya que al invocar

>>> result

el atributo que devuelve es el __repr__. Para que el objecto devuelva
el atributo __str__ tenés que usar algo como

>>> print result

Tuve experiencia con esto, y a pesar de que el __repr__ devuelta "El
usuario y\/o contrase\u00c3\u00b1a son incorrectos", si escribís print
result["message"], debería funcionar bien. Lo probé en su momento con
español y otras variantes más exóticas, como Sánscrito e Hindi, y
funcionó bien. Lamentablemente no tengo la laptop aquí, así que no te
puedo copiar algún ejemplo, pero al menos te confirmo que funciona :-)

Saludos,

Percy Perez

unread,
Jul 21, 2008, 12:12:17 PM7/21/08
to Django-es
Esto parece que funciona. Tienes que añadir esos dos comentarios en tu
archivo:

#!/usr/bin/python
# -*- coding: latin-1 -*-

result = {
'success': False,
'message': 'El usuario y/o contraseña son incorrectos',
}

print result['message']

Resultado:
[home~/sandbox/testing]: python test1.py
El usuario y/o contraseña son incorrectos
[home~/sandbox/testing]:

"César H. Roldán"

unread,
Jul 21, 2008, 2:27:39 PM7/21/08
to djan...@googlegroups.com
Si, de esa manera funciona en una consola, pero a la hora de usarlo
dentro de un modelo de django no.

Saludos !

Percy Perez escribió:

Leo Soto M.

unread,
Jul 21, 2008, 5:07:25 PM7/21/08
to djan...@googlegroups.com
2008/7/21 Percy Perez <per...@gmail.com>:

>
> Esto parece que funciona. Tienes que añadir esos dos comentarios en tu
> archivo:
>
> #!/usr/bin/python
> # -*- coding: latin-1 -*-

Como una recomendación general, suele ser mejor idea usar utf-8 como
encoding, en lugar de latin-1. Con los editores "clásicos" (vim,
emacs), es cosa de cambiar ese comentario y el editor lo reconoce
automáticamente. Con otros (ej: eclipse) puede ser necesario cambiar
las propiedades del proyecto.

--
Leo Soto M.
http://blog.leosoto.com

Percy Perez

unread,
Jul 21, 2008, 5:59:28 PM7/21/08
to Django-es
Hice este pequeño ejemplo y funciona bien.

En mi views:
# -*- coding: utf-8 -*-
from django.core.urlresolvers import reverse
from django.http import Http404, HttpResponseRedirect, HttpResponse
from django.shortcuts import render_to_response
from django.template import RequestContext

def show_string(request):
result = {
'success': False,
'message': 'El usuario y/o contraseña son incorrectos',
}
return render_to_response(
'base.html',
{'result': result},
context_instance=RequestContext(request)
)

En mi template (base.html):
<div id="content">
<p>Hello World,</p>
{% block content %}
{{result.message}}
{% endblock %}
</div>

On Jul 21, 2:07 pm, "Leo Soto M." <leo.s...@gmail.com> wrote:
> 2008/7/21 Percy Perez <perc...@gmail.com>:

Leo Soto M.

unread,
Jul 21, 2008, 6:16:32 PM7/21/08
to djan...@googlegroups.com
2008/7/21 Percy Perez <per...@gmail.com>:

>
> Hice este pequeño ejemplo y funciona bien.
>
> En mi views:
> # -*- coding: utf-8 -*-
> from django.core.urlresolvers import reverse
> from django.http import Http404, HttpResponseRedirect, HttpResponse
> from django.shortcuts import render_to_response
> from django.template import RequestContext
>
> def show_string(request):
> result = {
> 'success': False,
> 'message': 'El usuario y/o contraseña son incorrectos',

Un detalle: Para evitarse sorpresas, conviene que estas cadenas que
tienen caracteres no ASCII-7 sean unicodes en vez de simples
bytestrings. Esto aplica para Python en general, y no solo en
proyectos Django.

En la práctica lo que dije se traduce a simplemente anteponer una u al string:

'message': u'El usuario y/o contraseña son incorrectos'

Percy Perez

unread,
Jul 21, 2008, 6:53:48 PM7/21/08
to Django-es
> En la práctica lo que dije se traduce a simplemente anteponer una u al string:
>
> 'message': u'El usuario y/o contraseña son incorrectos'

Si, tienes razon.


On Jul 21, 3:16 pm, "Leo Soto M." <leo.s...@gmail.com> wrote:
> 2008/7/21 Percy Perez <perc...@gmail.com>:
>
>
>

Francisco Muñoz

unread,
Dec 18, 2013, 3:33:42 PM12/18/13
to djan...@googlegroups.com
funciona colocando antes del string u'algo con acentos y ñ'
Reply all
Reply to author
Forward
0 new messages