The callback sounds good. If it's not Unicode, then whatever we do is bound to be wrong or at least surprising. Letting the caller do their own conversion is the only way to ensure they're getting something they can work with.