If you do `something = unicode(something)` is the same as `something = unicode(something, 'ascii')` which means it would fail for `'abcdé'` because `é` doesn't exist in ASCII.

Actually the right thing to do would be to `thing = unicode(thing, 'utf8')` but what if the `.ini` file was written in iso-8859-1 (aka latin-1)?!

Sigh. Maybe I caused a storm in a teacup. Perhaps we stall this conversation for now and punt till later. Maybe better, instead of referencing the `str` function directly we can do something like:

```python
def safe_string(s):
    # TODO: make this return a correctly encoded unicode object some day
    return unicode(s)
```

But to start with, we should use `unicode` wherever we use `str` because that's a better start. We still don't solve the encoding but we can in a future PR.