我使用 stringWithFormat @"%ls" 来执行此操作,但我只看到复制的第一个字符,这让我认为它仍然假设它是单字节字符。
有任何想法吗?
Use initWithBytes:length:encoding
。你必须知道编码wchar_t
使用,我相信在Apple平台上它是UTF-32。
#if defined(__BIG_ENDIAN__)
# define WCHAR_ENCODING NSUTF32BigEndianStringEncoding
#elif defined(__LITTLE_ENDIAN__)
# define WCHAR_ENCODING NSUTF32LittleEndianStringEncoding
#endif
[[NSString alloc] initWithBytes:mystring
length:(mylength * 4) encoding:WCHAR_ENCODING]
一般来说,我建议避免使用wchar_t
如果可能的话,因为它不太便携。特别是,您应该如何找出它使用的编码? (在 Windows 上为 UTF-16LE 或 UTF-16BE,在 OS X、Linux 和 iOS 上为 UTF-32LE 或 UTF-32BE)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)