Unicode is a 16 bit character encoding. It is able to handle international characters sets from languages as Chinese and Arabic that need more space than the 8 bits ASCII length to encode a character. The early versions of Java worked with Streams which don't properly convert from bytes to characters. Now there are readers and writers available that do the conversion properly.