This may not be important for your application, but if what you want in the returned sequence are strings, and if you expect to deal with Unicode characters that are not in the Basic Multilingual Plane (BMP) set, then note the following differences.
(map str s) will return a separate string for each UTF-16 code unit, so any supplementary characters will result in 2 strings in the result, not one. Those 2 resulting strings won't be complete Unicode strings by themselves, since they each only contain one surrogate character. [1] has more info on UTF-16 encoding if you are curious.
e.g. (map str "smile \ud83d\ude03") will contain two strings "\ud83d" and "\ude03" at the end of the resulting sequence
(re-seq #"." s) will return a separate string for each Unicode code point, so BMP or supplementary characters will each result in one string in the output sequence, where supplementary characters become strings with 2 Java chars in them.
e.g. (re-seq #'." "smile \ud83d\ude03") will contain one string "\ud83d\ude03" at the end of the resulting sequence, since those two are a surrogate pair representing a single Unicode character
Similarly, there is the notion of combining characters in Unicode [2], e.g. a with a grave accent can be represented either with a single Unicode code point, or it can be represented by the Unicode character for "a" followed by the Unicode character for a combining grave accent, U+0300. (re-seq #'." s) would return separate strings for the "a" and the combining character in that case. If you want each non-combining character plus any following combining characters to be kept together, you can use:
(re-seq #"\PM\pM*" s)
\pM matches any Unicode combining character (whether it is in the BMP or supplementary), and \PM matches any other Unicode character.
Andy
[1]
http://en.wikipedia.org/wiki/UTF-16
[2]
http://en.wikipedia.org/wiki/Unicode#Ready-made_versus_composite_characters