Q:

Problems using special characters like ñ or é using pymongo

Using pymongo I can't handle insertions with special characters like ñ or é. I add my code and the error I get calling my python script
# -*- coding: utf-8 -*-
import sys
import pymongo
import codecs

UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)

class item(object):
    def __init__(self, categoria, nombre, cantidad, foto, comentario):
        self.categoria = categoria
        self.nombre = nombre
        self.cantidad = cantidad
        self.foto = foto
        self.comentario = comentario

    def getItem(self):
        return {'categoria':self.categoria, 
                'nombre':self.nombre, 
                'cantidad':self.cantidad, 
                'foto':self.foto, 
                'comentario':self.comentario}

def main():
    mongodb_uri = 'mongodb://localhost:27017'
    db_name = 'inventario'
    try:
        connection = pymongo.Connection(mongodb_uri)
        database = connection[db_name]
    except:
        print('Error: Unable to connect to database.')
        connection = None
    if connection is not None:      
    continuar = True
    while continuar:

        categoria = raw_input('Categoria: ')
        nombre = raw_input('Nombre: ')
        cantidad = raw_input('Cantidad: ')
        foto = raw_input('Foto: ')
        comentario = raw_input('Comentario: ')
        a = item(categoria, nombre, cantidad, foto, comentario)
        #print a.getItem()
        database.equipo.insert(a.getItem())
        c = str((raw_input('Otro objeto S/N: ').lower()))
        if c == 'n':
            continuar = False
main()

C:\Users\felipillo\Documents\GitHub\Inventario>python inventario.py
Categoria: Biología
Nombre: Modelo Riñón
Cantidad: 2
Foto:
Comentario:
Traceback (most recent call last):
  File "inventario.py", line 49, in <module>
    main()
  File "inventario.py", line 45, in main
    database.equipo.insert(a.getItem())
  File "C:\Python27\lib\site-packages\pymongo-2.4.1-py2.7-win32.egg\pymongo\coll
ection.py", line 359, in insert
bson.errors.InvalidStringData: strings in documents must be valid UTF-8

C:\Users\felipillo\Documents\GitHub\Inventario>

A:

You could try this:
enc = sys.stdin.encoding

categoria = raw_input('Categoria: ').decode(enc)
nombre = raw_input('Nombre: ').decode(enc)
cantidad = raw_input('Cantidad: ').decode(enc)
foto = raw_input('Foto: ').decode(enc)
comentario = raw_input('Comentario: ').decode(enc)

