私のiOS 5.1アプリケーションではwchar_t
、文字列を使用するサードパーティのライブラリを使用しています。これは内部的には問題なく動作しますが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 éèüçß";
もちろん、小さなサンプル プログラムを作成して調べるのは簡単ですが、コンパイラの特定の実装に依存しないソリューションが必要です。
私が混乱していると思うなら、それは私が少し混乱しているからです.