NSString initWithBytes возвращает nil, если указан массив wchar_t, содержащий китайские символы

У меня есть собственный строковый класс C ++ в моем приложении для iOS, основанный на массиве wchar_t, У меня есть метод, чтобы преобразовать его в NSString это выглядит так:

NSString *str = [[[NSString alloc]initWithBytes:(const void *)mArray
length:sizeof(wchar_t) * mLength
encoding:NSUTF32LittleEndianStringEncoding]autorelease];
return str;

У меня есть случай, когда входная строка содержит некоторые китайские символы (в частности, 新 譯本), и initWithBytes возвращает ноль Там нет ничего в документация о методе, возвращающем ноль; это условие ошибки? Кто-нибудь знает, что может заставить метод дать нулевой результат?

0

Решение

Оказывается, что wchar Переданный массив иногда содержал символы UTF-16, а UTF-16 по-разному кодирует многобайтовые символы. И если initWithBytes получает неверные данные, возвращает nil,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]