From a little script I wrote to "say" code on a text-to-speech announcer. The symbol words are chosen to be single-syllable as much as possible. It can also restore text from the results. I may post the script sometime.
equate( " \t\r\n",
qw(space tab return line) );
equate( '!@#$%^&*+:;',
qw(bang at hash buck cent hat and star plus colon semi) );
equate( '<>()[]{}',
qw(less more open close elbrack arbrack elbrace arbrace) );
equate( '-=_|',
qw(dash is bar pipe) );
equate( '\\/~`\'",.?',
qw(hack slash wave tick tock quote comma dot query) );
equate( '0123456789',
qw(zero one two three four five six seven eight nine) );
equate( 'abcdefghijklmnopqrstuvwxyz',
qw(ay bee see dee ee eff gee aitch eye
jay kay ell em en oh pee cue ar
ess tee yoo vee dub ecks why zed) );
--
[ e d @ h a l l e y . c c ]