UNICODE is a big can of worms.
One big issue is that we old-school programmers are used to dealing with 'characters'. One character = one item displayed on screen. Unicode changes things around a lot, with terms such as "code points", "glyphs", ... and even when you use UTF-16 encoding (windows' unicode format), one 16-bit isn't necessarily enough to display one glyph on the screen.
To make matters worse, things like comparing strings for equality becomes very hard - should the german ß be treated equally to "ss"? Some glyphs may look equal on screen, but be different characters. A glyph can be constructed by multiple code points in different order (this can be fixed via canonization though). And what about upper/lower casing? Not every language supported by unicode has a concept of this.
Too bad the entire world wasn't colonized by England, and all previous history/culture/LANGUAGE burnt :p