I've been using spirit classic for quite a while and recently start learning v2. Both are easy to use and powerful enough to handle moderate parsing issue. In those idyllic days with the spirit classic and ascii characters, the job is simply adapting an EBNF to LL form. But finally, I have to deal with the i18n. My thought is really crude. Make a forward iterator which iterates over the input text byte stream of any encoding. The iterator handles these encoding conversion job and feeds the parser with utf16/32 code unit(the iterator could be easily implemented by either iconv or icu4c). The type of code unit should be the internal char type processed by parser. But after reading through the doc, I could find only several primitive, iterator templates have a explicit char_t parameter. Does that mean I have to reformulate those numerics, directives, scanners,and etc.? I also checked out the v2 doc. It offers a namespace way to make everything consistent, but still not too much about how to explicitly change the internal char type. Again, I searched the mailing list archive, but seems those unicode and other encoding related post is still up in the air. Some one told me that spirit could still work through those files with different encoding. So I tested the parser using files with different encoding but same content. Several MBCS encoded files passed the test, and casually some utf8 file also passed. But other encoding failed most of the time.