NET 等效于 vbUnicode UTF32Encoding/UTF32Decoding 吗?
3 回答
vbUnicode 只是一个常数。它本身是没有意义的。给我们看一些代码。你想做什么?
您是否像这样使用StrConv将 ANSI 字符串转换为 UTF32 ?
newString = StrConv(ansiString, vbUnicode)
VB.Net 等价物可能是Encoding.Default.GetString因为Encoding.Default用于 ANSI 编码
newString = Text.Encoding.Default.GetString(ansiStringAsByteArray)
但这可能取决于您用于获取 ANSI 字符串的代码
不确定您在寻找什么,但Encoding
尤其是这些课程Encoding.UTF32Encoding
可能是您需要的。
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 示例中没有的特殊性。