NET中VB6的vbUnicode是否相等?

时间:2012-10-14 07:28:23

标签: vb.net vb6 vb6-migration

NET是否等同于vbUnicode UTF32Encoding / UTF32Decoding?

3 个答案:

答案 0 :(得分:5)

vbUnicode只是一个常数。它本身毫无意义。向我们展示一些代码。你想做什么?

您是否正在使用StrConv将ANSI字符串转换为UTF32?

newString = StrConv(ansiString, vbUnicode) 

VB.Net等效项可能是Encoding.Default.GetString,因为Encoding.Default用于ANSI编码

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

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

答案 1 :(得分:3)

不确定您要找的是什么,但Encoding类,特别是Encoding.UTF32Encoding可能就是您所需要的。

答案 2 :(得分: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与没有LocaleID的StrConv相近。 GetEncoding(1252)增加了Mark的VB6示例中没有的特异性。