1

NET 等效于 vbUnicode UTF32Encoding/UTF32Decoding 吗?

4

3 回答 3

5

vbUnicode 只是一个常数。它本身是没有意义的。给我们看一些代码。你想做什么?

您是否像这样使用StrConv将 ANSI 字符串转换为 UTF32 ?

newString = StrConv(ansiString, vbUnicode) 

VB.Net 等价物可能是Encoding.Default.GetString因为Encoding.Default用于 ANSI 编码

newString = Text.Encoding.Default.GetString(ansiStringAsByteArray) 

但这可能取决于您用于获取 ANSI 字符串的代码

于 2012-10-14T08:21:42.957 回答
3

不确定您在寻找什么,但Encoding尤其是这些课程Encoding.UTF32Encoding可能是您需要的。

于 2012-10-14T07:44:13.303 回答
0

Encoding.Default@MarkJ 的回答对我有用,但我有点紧张,因为默认值似乎取决于您的语言环境。找到了 KB 311338,它展示了如何明确指定字符集,并推荐 1252 用于西欧字符。所以转换马克的例子,变成:

newString = System.Text.Encoding.GetEncoding(1252).GetString(ansiStringAsByteArray) 

在我的美国英语系统上,它给出了与 相同的结果Encoding.Default,但指定 1252 理论上应该给出相同的结果,而不管语言环境如何。

2016 年 1 月 18 日更新

在看到下面@MarkJ 的评论后,我做了一些研究,发现VB6 StrConv实际上确实使用默认语言环境,除非您指定一个。(并且您只能指定一个 LocaleID,例如美国英语的 1033,而不是 ANSI 代码页,例如西欧的 1252。)因此Encoding.Default更接近于StrConv没有 LocaleID。GetEncoding(1252)添加了 Mark 的 VB6 示例中没有的特殊性。

于 2016-01-16T01:48:01.630 回答