Objective-C++ と Unity (iOS ゲーム用) の間で文字列をマーシャリングする目的で、Mono のマーシャリング ガイドを読んでいますが、Mono での文字列マーシャリング エンコーディングについて多少混乱しています。
マーシャリング用の文字列エンコーディングは CharSet 列挙型で指定されていることは理解していますが、Ansi と Unicode (=UTF-16) (および Auto ですが、ランタイムが最初の 2 つから選択するだけです) のみが許可されます。
しかし、このガイドでは、Mono は文字列を UTF-8 でマーシャリングするとも言い続けています。そんなことがあるものか?CharSet が指定されていない場合に発生するこの魔法ですか? これは、CharSet を指定しない場合、Objective-C++ から C# に -[NSString UTF8String] を安全に渡すことができるということですか? また、これは Microsoft のランタイムとの非互換性を意味しますか?