Im my iOS 5.1 приложение, я использую стороннюю библиотеку, которая использует строки wchar_t
для строк. Это работает нормально внутри, но мне иногда нужно создать NSString
для такой строки. Я могу использовать следующий API:Что такое утверждение iOS wchar_t?
- (id)initWithBytes:(const void *)bytes length:(NSUInteger)length encoding:(NSStringEncoding)encoding
Но какую кодировку я должен использовать? Поскольку wchar_t
в прошивке составляет 32 бит, кандидата кодироаки:
NSUTF32StringEncoding
NSUTF32BigEndianStringEncoding
NSUTF32LittleEndianStringEncoding
Какого порядка байт я должен использовать? Должен ли я использовать порядок байтов кодирования, соответствующий результату long NSHostByteOrder()
?
И, кстати, какой порядок байтов NSUTF32StringEncoding
представляет? Будет ли рассмотрено байты и вывести порядок байтов? И что это даст при конвертации от NSString с getBytes:maxLength:usedLength:encoding:options:range:remainingRange:
?
Обратите внимание, что меня не интересует обмен данными между платформами здесь (хотя мне, возможно, придется столкнуться с этой проблемой слишком рано).
Гуглинг вокруг не помог.
Моя догадка заключается в том, что это определено в компиляторе, например. какая кодировка используется мой компилятор (лязг), когда я пишу:
wchar_t *s = L"string with non ascii unicode characters such as éèüçß";
Конечно, это достаточно просто написать небольшой пример программы и выяснить, но я хотел бы решение, которое не опирается на конкретной реализации моего компилятора.
Если вы считаете, что я в замешательстве, это потому, что я немного.
Вы чрезмерно задумываетесь об этом. Библиотека будет скомпилирована, чтобы использовать конечность вашего компилятора C. NSUTF32StringEncoding должно быть хорошо для большинства вещей. Игра меняется, если вы экспортируете на не-iOS хосты. – starbolin
В этом случае вам нужно добавить опцию для экспорта файлов. Формат файла экспорта должен быть большим, чтобы быть совместимым с сетевым байтом. – starbolin
@starbolin: 'NSUTF32StringEncoding' проблематично, это особенно вызовет проблемы в направлении' NSString' -> 'wchar_t'. –