Problemas al escribir frase codificada

Marcos Sánchez Provencio rapto en arrakis.es
Mar Oct 5 11:56:05 CEST 2004


Luis Miguel Morillas escribió:

>Mensaje citado por Chema Cortés <py en ch3m4.org>:
>
>  
>
>>On Sunday 03 October 2004 23:27, Fernando Blat wrote:
>>    
>>
>>>Hola a todos,
>>>
>>>estoy volviéndome loco para grabar a un fichero (fd.write(frase)) un
>>>      
>>>
>>string
>>    
>>
>>>codificado con unicode, y es que me devuelve mil errores en las mil formas
>>>diferentes que lo he intentado.
>>>
>>>Si lo pruebo así a pelo me dice:
>>>
>>>UnicodeEncodeError: 'ascii' codec can't encode character u'\xbf' in
>>>position 54: ordinal not in range(128)
>>>
>>>      
>>>
>¿Qué te dice    
>
>python -c "import sys; print sys.getdefaultencoding()"
>?
>
>  
>
>>>Luego he buscado la clase Coder del módulo codecs y nada de nada.
>>>
>>>Los strings están codificados con la función unicode de la siguiente
>>>      
>>>
>>forma:
>>    
>>
>>>unicode(string,'cp1252').
>>>
>>>Os ha sucedido esto alguna vez?
>>>      
>>>
>>El sistema operativo tiene que entender "unicode" por defecto en los ficheros
>>
>>de texto, pero como mucho se emplea el "unicode" para los nombre de fichero,
>>
>>y poco más.
>>
>>    
>>
La cuestión es que _no_ existen los ficheros de texto unicode. Existen 
ficheros de texto codificados en alguna codificación. XML usa UTF8 por 
defecto, aunque está encima el orden de los bytes. Si quieres otra 
codificación en XML, no hay más que declararla al principio. Pero, 
repito, los 'caracteres' en unicode son una abstracción, como las 
fechas. Siempre tiene que haber un acuerdo para saber cómo 
interpretarlas a partir de un texto.

>
>Si trabajas con xml, por defecto todo va en unicode.
> 
>  
>
>>Si tu sistema no soporta unicode, tienes dos opciones:
>>
>>1.- convertir de unicode a la codificación que use tu sistema
>>2.- emplear el 'codecs.open()' para trabajar con unicodes (conversión 
>>automática)
>>
>>Como te dice Marcos, si tu sistema soportada 'utf8', empléala para codificar
>>
>>unicodes.
>>
>>    
>>
>
>
>  
>




Más información sobre la lista de distribución Python-es