Let's say you have a system in which a fairly long key value can be accurately transmitted to the user on the screen, by email or through paper; but the user should be able to quickly pass the key to you by reading it on the phone or reading it and returning it to another interface.
What is a “good” way to encode a key to read / hear / print it easily and accurately?
This can be an account number, a document identifier, a transaction identifier, or another abstract value. Say, for the sake of this discussion, the base value of the key is a large number, for example, 40 digits in the base 10.
Some thoughts:
Shorter keys are usually better.
- A 40-digit base value of 10 may not fit into a given space and is easily lost in the middle
- the same value can be represented in base 16 in 33-34 digits
- the same value can be represented in base 36 in 26 digits
- the same value can be represented in base 64 in 22-23 digits
Symbols that cannot be visually confused with each other are better
- eg. encoding that includes both O (oh) and 0 (zero), or S (ess) and 5 (five) can be bad.
- This problem depends on the font / face used to display the key, which you can control in some cases (for example, for printing on paper), but cannot control others (for example, web pages and email).
- , / - , D (dee) O (oh), d (dee) ; l (ell) 1 (), L (ell) - . ( /).
, / ,
- a (ay) 8 ()
- B (bee) C (cee) D (dee) E (ee) g (gee) p (pee) t (tee) v (vee) z (zee) 3 ()
- - , , , , CB VOIP.
, .
alpha-bravo-charlie-delta , .
:
- 64 - , (, ..).
- 34 - 0-9 A-Z, O (oh) (aye), ,
- 32 - , 34, 0 () 1 (),
, ?