У меня есть собственный строковый класс C ++ в моем приложении для iOS, основанный на массиве wchar_t
, У меня есть метод, чтобы преобразовать его в NSString
это выглядит так:
NSString *str = [[[NSString alloc]initWithBytes:(const void *)mArray
length:sizeof(wchar_t) * mLength
encoding:NSUTF32LittleEndianStringEncoding]autorelease];
return str;
У меня есть случай, когда входная строка содержит некоторые китайские символы (в частности, 新 譯本), и initWithBytes
возвращает ноль Там нет ничего в документация о методе, возвращающем ноль; это условие ошибки? Кто-нибудь знает, что может заставить метод дать нулевой результат?
Оказывается, что wchar
Переданный массив иногда содержал символы UTF-16, а UTF-16 по-разному кодирует многобайтовые символы. И если initWithBytes
получает неверные данные, возвращает nil
,
Других решений пока нет …