2017-03-09 192 views
-1

我使用C#Marshal.PtrToStringUni(IntPtr)从Sql Server读取数据 它返回拉丁字符,但没有正确地给出Unicode字符。对于Unicode字符,我看到一些垃圾 我错过了一些转换?C#Marshal.PtrToStringUni不返回Unicode值

+0

请更新您的帖子以纳入您的代码 –

回答

1

ANSI编码不是Unicode。改用PtrToStringUni方法。

+0

您是不是指'PtrToStringAnsi'而不是?拉丁语编码的字符串是8位,Unicode字符串是16位。 'PtrToStringAnsi'需要8位输入,'PtrToStringUni'需要16位输入。如果数据以8位的形式返回,那么'PtrToStringAnsi'会更合适。 –