在P / Invoke中编组字符串时Mono使用什么编码?

时间:2013-07-07 13:07:42

标签: c# mono pinvoke

我正在阅读Mono's marshalling guide,目的是在Objective-C ++和Unity(用于iOS游戏)之间编组字符串,我对Mono中的字符串编组编码感到有些困惑。

我理解编组的字符串编码由CharSet枚举指定,但它只允许Ansi和Unicode(= UTF-16)(和Auto,但这只是让运行时在前两个之间进行选择)。

但该指南还一直说Mono用UTF-8编组字符串。怎么可能?如果没有指定CharSet,会发生这种魔法吗?这是否意味着我可以安全地将 - [NSString UTF8String]从Objective-C ++传递给C#,如果我没有指定CharSet?这是否意味着与微软的运行时不兼容?

1 个答案:

答案 0 :(得分:3)

Ansi charset值在非Windows操作系统上毫无意义,因此在这种情况下使用utf-8,就像你的iOS一样。

这与MS运行时不兼容,但在这种情况下更大的不兼容性是在iOS上根本不运行MS运行时:)。