This takes the approach of allowing ambiguous characters by decoding them to the same value, and also considers the problem of accidental obscenities.
5-bit base-32 oi23456789 abcdefghkl mnpqrstuvw y
o = 0 i = 1 j, x and z removed.
I like that you can fit 6 characters in an 32-bit integer and still have to bits to spare... makes for compact usernames and network bandwidth.
https://godocs.io/encoding/base32
This takes the approach of allowing ambiguous characters by decoding them to the same value, and also considers the problem of accidental obscenities.