Olá, o Python realmente é mais "exigente" no tratamento de strings que em outras linguagens, mas isso ocorre por que ele as trata da forma mais correta, e por conseqüência se "apanha" um pouco para aprender como funciona por tentativa e erro. O melhor é procurar uma explicação detalhada sobre codificação de caracteres com Python (vi algumas pela internet), mas vou dar uma super resumida para iniciantes:
ascii: representação de caracteres com apenas 7 bits, não tem caracteres com acentos latin-1 (iso-8859-1): representação com 8 bits, ascii + caracteres com acentos, 'ç', etc. utf-8: representação com número variável de bits, qualquer caracter unicode pode ser representado em utf-8 unicode: formato de tratamento de strings em memória, para ser salva tem que ser convertida para uma das representações acima. Em Python, quando tu declara uma string com a syntaxe u'Minha string', tu estás na verdade criando um objeto do tipo 'unicode'. Quando usa a syntaxe convencional 'Minha string', o interpretador não tem como saber em qual conjunto de caracteres ela está representada, e por padrão ele assume que seja 'ascii'. Por exemplo, se digitar o seguinte em um console Python: u'%s' % 'á' o interpretador tentaria criar uma string unicode formatada a partir de uma string unicode de parâmetro. Como o que foi passado de parâmetro foi uma string normal, ela deve ser convertida para unicode primeiro, mas ao fazer a conversão o interpretador assume que ela está em ascii, mas ascii não tem caracteres com acento, e portanto uma excessão é gerada. Tu chegaste a mencionar que quando o username estava vazio dava erro, isso é por que tu não podes construir um objeto unicode a partir de algo diferente de uma string (como é o caso do None que provavelmente ele estava recebendo no teu código). Aqui tem algumas informações sobre encodings interessantes: http://www.slideshare.net/codebits/unicode-poetry-167368 []'s Daniel -- Daniel Monteiro Basso Líder Técnico do Centro de Inovação Trino Pólo - Pólo de Informática de Caxias do Sul http://www.trinopolo.com.br