Earlier quoted context omitted.
Can you provide some examples of Python 3 getting strings wrong? Between strings being native unicode code points (you have to encode to bytes to get UTF-8) and unicodedata for normalization and decomposition ( http://docs.python.org/3.3/library/unicodedata.html ) I've found Python 3 pretty robust. Python 3.3 also uses appropriate Unicode data for regular expressions, as mentioned on http://docs.python.org/3.3/howto/…
Did you read the comment you're replying to at all? You can start at “It's sad 99% comments”. PS: Python 3.3.2 (default, Nov 27 2013, 20:04:48) [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.79)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> 'öo̧'[1:] '̈o̧' And sorry, those new regexes don't even support \X (grapheme matching) Edit: python version
[edit: Python 3.2.3]
[edit: [GCC 4.7.2] on linux2]
>>> 'öo̧'[1:] #copy-paste
'o̧'
>>> 'öo̧'[::-1] # "reverse" also breaks
'̧oö'
#But for Japanese:
>>> '日本語'[1:]
'本語'
>>> '日本語'[:-1]
'日本'
>>> '日本語'[-1:]
'語'
>>> '日本語'[::-1]
'語本日'
# And Norwegian
>>> 'æåø'[::-1]
'øåæ'
# And a few "French" characters (in this case
# manually typed as alt+~+e, etc
>>> 'ẽêèe'[::-1]
'eèêẽ'
# And crucially for your example, typed as
# alt+"+o
>>> 'öo'[::-1]
'oö'
So is your initial example some kind of unicode-without-bom(b) or
something?[edit2: I gather, that working with "pre-composed" characters work, and working with "de-composed" ones break. Which, while expected, is a little sad, I agree.]