UTF-8 is just an encoding. Unicode is a more general term.  Python 3 allows you to convert bytes to unicode from any encoding, including utf-8 (which is default).  Using utf-8 as the internal unicode representation is flawed too - index and length operations are slow.<p>For regexes, \w matches any unicode word character (unless ASCII mode is on), just use it on strings.  If you use it on bytes, then yes, you can only match bytes.