 <p>These are just some ideas.</p> <p>Isn't step 3 actually straightforward (just compress and/or encrypt the data into different bytes)? For 7-bit ASCII, you can also, before compressing and/or encrypting, store the data by packing the bits so they fit into fewer bytes.</p> <p>If you can use UTF-32, UTF-8, and so on in step 5, you have access to all the characters in the <a href="http://en.wikipedia.org/wiki/Unicode" rel="nofollow">Unicode</a> Standard, up to 0x10FFFD, with some exceptions; for example, some code points are noncharacters in the Unicode Standard, such as 0xFFFF, and others are invalid characters, such as 0xD800.</p>