@mdboom -- this has been a while, and I still feel I've little understanding how the `units` package actually works, but this was triggered by the fact that one cannot have a unit that does not start with a letter in the registry. 

I'm not quite sure what specific problem you refer to here. In some sense, all one does is substitute every occurence of `u'%'` for `u'percent'`; if a format cannot do percent, then it should still fail, shouldn't it? Generally, it seems the `format.FITS()` class only checks whether units confirm to the fits standard for writing -- and properly raises an exception for `'%'`.

Looking in more detail, `format.fits` and `format.vounit` do override `_parse_unit`, but it does not seem to get used when one parses a unit:
```
In [23]: fits_unit = u.format.Fits()

In [24]: fits_unit.parse('%')
Out[24]: Unit("%")

In [25]: fits_unit._parse_unit('%')
ERROR: ValueError: Unit '%' not supported by the FITS standard. [astropy.units.format.fits]
```
Is this behaviour as planned? If not, is this a separate issue?