2011-11-28 8 views
6

Muchos problemas que he encontrado en Python se han relacionado con la falta de algo en Unicode. ¿Hay alguna buena razón para no usar Unicode por defecto? Entiendo la necesidad de traducir algo en ASCII, pero parece ser la excepción y no la regla.¿Hay alguna buena razón para no utilizar unicode en lugar de cadena?

Sé que Python 3 usa Unicode para todas las cadenas. ¿Debería esto alentarme como desarrollador a unicode() todas mis cadenas?

Respuesta

6

En general, voy a decir "no", no hay una buena razón para usar string sobre unicode. Recuerde, también, que no tiene que llamar al unicode() para crear una cadena Unicode, puede hacerlo al ponerle un prefijo a la cadena con una minúscula como u"this is a unicode string".

+1

Gracias, comenzaré a hacerlo a partir de ahora. –

4

En 2.x Python:

  • Un objeto str es básicamente una secuencia de bytes .
  • Un objeto unicode es una secuencia de caracteres.

Sabiendo esto, debería ser fácil elegir el tipo correcto:

  • Si quieres una cadena de caracteres uso unicode.
  • Si desea una cadena codificada como bytes use str (en muchos otros idiomas utilizará byte[] aquí).

En Python 3.x, el tipo str es una cadena de caracteres, tal como cabría esperar. Puede usar bytes si desea una secuencia de bytes.

+0

Python 2.6+ también tiene bytearrays, si quiere que sus bytes tengan algo más mutable. – kindall

Cuestiones relacionadas