also there are letters and numbers that are visually ambiguous (1/l, 0/O, etc). In binary and with error correction it's easy.
QR can also be animated, allowing for a huge amount of data.
wish I could find a cool article I read a year or so back, but the wikipedia page is pretty interesting too: