use c++11's new char32_t for utf32