当给定包含汉字的wchar\t数组时,NSString initWithBytes返回nil 我在iOS应用程序中有一个自定义的C++字符串类,它是基于一个数组“ WCARGYT ”。我有一个方法将其转换为NSString,如下所示: NSString *str = [[[NSString alloc]initWithBytes:(const void *)mArray length:sizeof(wchar_t) * mLength encoding:NSUTF32LittleEndianStringEncoding]autorelease]; return str;
我有一个例子,输入字符串包含一些中文字符(特别是新譯本), 而当给定包含汉字的wchar\t数组时,NSString initWithBytes返回nil 我在iOS应用程序中有一个自定义的C++字符串类,它是基于一个数组“ WCARGYT ”。我有一个方法将其转换为NSString,如下所示: NSString *str = [[[NSString alloc]initWithBytes:(const void *)mArray length:sizeof(wchar_t) * mLength encoding:NSUTF32LittleEndianStringEncoding]autorelease]; return str;,c++,ios,objective-c,nsstring,wchar-t,C++,Ios,Objective C,Nsstring,Wchar T,我有一个例子,输入字符串包含一些中文字符(特别是新譯本), 而initWithBytes返回nil。中没有关于返回nil的方法的任何信息;这是一种错误情况吗?有人知道什么样的事情可能会使该方法返回nil结果吗?事实证明,传入的wchar数组中有时包含UTF-16字符,UTF-16编码多字节yte字符不同。如果initWithBytes获取无效数据,它将返回nil您能给出一个独立的小示例吗?我已经用wchar\t*mArray=L测试了您的代码新譯本";没有问题。@MartinR-现在已经排序了。
initWithBytes
返回nil。中没有关于返回nil的方法的任何信息;这是一种错误情况吗?有人知道什么样的事情可能会使该方法返回nil结果吗?事实证明,传入的wchar
数组中有时包含UTF-16字符,UTF-16编码多字节yte字符不同。如果initWithBytes
获取无效数据,它将返回nil
您能给出一个独立的小示例吗?我已经用wchar\t*mArray=L测试了您的代码新譯本";
没有问题。@MartinR-现在已经排序了。传入的wchar
数组有时会添加UTF-16字符,而这两种编码处理多字节字符的方式不同。显然,如果initWithBytes
获取无效数据,它会返回nil。我会在允许的情况下发布一个答案。@Mr.Jefferson:现在您可以了可以把它作为答案…@ FaimPARKAR。你是。完成。我强烈建议使用UTF-8,并且尽可能避免W查尔格。C和C++语言甚至不指定WHARCHETT使用什么编码,它可以是16或32位,它可以是BigeNead或LITTLE。