It's important to note that choice of language affects a lot of these issues. For example, the unicode issue in Python: >>> s = unicode('Les Misérables','utf-8') >>> print s[::-1] selbarésiM seL
Nope, Python fucks this up just the same, even in Python 3: >>> print u'Les Mise\u0301rables'[::-1] #2 >>> print('Les Mise\u0301rables'[::-1]) #3 selbaŕesiM seL Almost no implementation will fuck up LATIN SMALL LETTER E WITH ACUTE U+00E9, but nearly all programming languages will royally fuck up a COMBINING ACUTE ACCENT U+0301 even in much easier cases like string length. Almost all implementations that claim to be U…
>>> import unicodedata
>>> print unicodedata.normalize('NFC', u'Les Mise\u0301rables')[::-1]
selbarésiM seL