当给定包含中文字符的wchar_t数组时,NSString initWithBytes返回nil

NSString initWithBytes returns nil when given wchar_t array containing Chinese characters

本文关键字:数组 NSString initWithBytes nil 返回 包含 中文 字符 wchar      更新时间:2023-10-16

我的iOS应用程序中有一个自定义C++字符串类,它基于wchar_t数组。我有一个将其转换为NSString的方法,看起来像这样:

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

我有一个例子,输入字符串包含一些中文字符(特别是新譯本),并且CCD_ 3返回零。文档中没有任何关于返回nil的方法的内容;这是错误情况吗?有人知道是什么样的事情会让这个方法踢出零结果吗?

事实证明,传入的wchar数组中有时包含UTF-16字符,而UTF-16对多字节字符的编码方式不同。如果initWithBytes得到无效数据,则返回nil