1

Objective-C++ と Unity (iOS ゲーム用) の間で文字列をマーシャリングする目的で、Mono のマーシャリング ガイドを読んでいますが、Mono での文字列マーシャリング エンコーディングについて多少混乱しています。

マーシャリング用の文字列エンコーディングは CharSet 列挙型で指定されていることは理解していますが、Ansi と Unicode (=UTF-16) (および Auto ですが、ランタイムが最初の 2 つから選択するだけです) のみが許可されます。

しかし、このガイドでは、Mono は文字列を UTF-8 でマーシャリングするとも言い続けています。そんなことがあるものか?CharSet が指定されていない場合に発生するこの魔法ですか? これは、CharSet を指定しない場合、Objective-C++ から C# に -[NSString UTF8String] を安全に渡すことができるということですか? また、これは Microsoft のランタイムとの非互換性を意味しますか?

4

1 に答える 1

4

Ansi charset 値は、Windows 以外のオペレーティング システムでは意味がないため、その場合、iOS の場合と同様に utf-8 が使用されます。

これは MS ランタイムとの非互換性ですが、この場合のより大きな非互換性は、MS ランタイムが iOS でまったく実行されないことです:)。

于 2013-07-08T06:32:07.593 に答える