【发布时间】:2017-03-09 21:12:05
【问题描述】:
我正在使用 C# Marshal.PtrToStringUni(IntPtr) 从 Sql Server 读取数据 它返回拉丁字符,但没有正确给出 Unicode 字符。对于 Unicode 字符,我看到一些垃圾 我错过了一些转换?
【问题讨论】:
-
请更新您的帖子以包含您的代码
标签: c# unicode marshalling
我正在使用 C# Marshal.PtrToStringUni(IntPtr) 从 Sql Server 读取数据 它返回拉丁字符,但没有正确给出 Unicode 字符。对于 Unicode 字符,我看到一些垃圾 我错过了一些转换?
【问题讨论】:
标签: c# unicode marshalling
ANSI 编码不是 Unicode。请改用PtrToStringUni 方法。
【讨论】:
PtrToStringAnsi吗?拉丁编码字符串为 8 位,Unicode 字符串为 16 位。 PtrToStringAnsi 需要 8 位输入,PtrToStringUni 需要 16 位输入。如果数据返回为8bit,PtrToStringAnsi会更合适。