Im my iOS 5.1 应用程序, 我使用一个使用 < code> wchar_t 字符串的第三方库。 这在内部运作良好, 但我有时需要为此字符串创建一个 < code> NSString 。 我可以使用以下 API :
- (id)initWithBytes:(const void *)bytes length:(NSUInteger)length encoding:(NSStringEncoding)encoding
但我应该使用什么编码? 由于iOS 中的 wchar_t
是32位元, 候选编码是:
NSUTF32StringEncoding
NSUTF32BigEndianStringEncoding
NSUTF32LittleEndianStringEncoding
我应使用哪个字节顺序? 我应使用与 < code> loong NSHostByteOrder () 相应的编码字节顺序吗?
顺便说一句,哪个字节顺序代表了 NSUTF32StringEncoding
? 它是否要检查字节并推断字节顺序? 当用 getBytes转换 NSString :maxLength: maxLength: usedLength: encoding: options: range: remainingRange:
时,它将产生什么效果?
请注意,我并不关心这里各平台之间的数据交换(尽管我可能总有一天不得不面对这个问题)。
到处乱逛也帮不上什么忙
我的直觉是,这是编译者定义的,例如,当我写作时,我的编译者(CLang)使用什么编码:
wchar_t *s = L"string with non ascii unicode characters such as éèüçß";
当然,写一个小样本程序并找出答案很容易, 但我喜欢一个不依赖具体实施我编译器的解决方案。
如果你认为我搞糊涂 那是因为我有点糊涂