我是我的 iOS 5.1 应用程序,我使用wchar_t
用于字符串的 3rd 方库。这在内部工作正常,但我有时需要NSString
为这样的字符串创建一个。我可以使用以下 API:
- (id)initWithBytes:(const void *)bytes length:(NSUInteger)length encoding:(NSStringEncoding)encoding
但是我应该使用什么编码?由于wchar_t
在 iOS 中是 32 位,候选编码是:
NSUTF32StringEncoding
NSUTF32BigEndianStringEncoding
NSUTF32LittleEndianStringEncoding
我应该使用哪个字节顺序?我应该使用与结果相对应的编码字节顺序long NSHostByteOrder()
吗?
顺便说一句,代表哪个字节顺序NSUTF32StringEncoding
?它会检查字节并推断字节顺序吗?从NSString转换时会产生什么getBytes:maxLength:usedLength:encoding:options:range:remainingRange:
?
请注意,我不关心这里的平台之间的数据交换(尽管有一天我可能不得不面对这个问题)。
谷歌搜索并没有太大帮助。
我的预感是这是编译器定义的,例如,当我编写时,我的编译器 (CLang) 使用什么编码:
wchar_t *s = L"string with non ascii unicode characters such as éèüçß";
当然,编写一个小示例程序并找出答案很容易,但我想要一个不依赖于我的编译器的具体实现的解决方案。
如果你相信我很困惑,那是因为我有点。