better unicode string wchar_t char16_t char32_t support