2012-10-14 67 views
1

NET與vbUnicode UTF32Encoding/UTF32Decoding是否等同?NET中VB6的vbUnicode的等價性?

+5

很難知道是否有等價物,因爲您沒有向我們展示如何在VB6中使用它的代碼示例。 –

+1

http://msdn.microsoft.com/en-us/library/d3sz0f8a%28v=vs.71%29.aspx –

回答

5

vbUnicode只是一個常量。這本身毫無意義。向我們展示一些代碼。你想做什麼?

你是否像這樣將一個ANSI字符串轉換爲UTF32與StrConv

newString = StrConv(ansiString, vbUnicode) 

一個VB.Net等同可能是因爲Encoding.Default.GetStringEncoding.Default爲ANSI編碼

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

但它可能取決於你的代碼來獲得ANSI字符串

3

不知道你在找什麼,但Encoding類,特別是Encoding.UTF32Encoding可能是你所需要的。

+0

沒有看到代碼,這都是猜測,但它更可能是OP需要['Encoding.Default '](http://msdn.microsoft.com/en-us/library/system.text.encoding.default.aspx)。在VB6中'vbUnicode'的常見用法是將Windows「ANSI」字符串轉換爲UTF-16,以將它們存儲在VB6本地字符串(應該是UTF-16)中。看到我的答案。在VB6中,不太可能將UTF-32與'vbUnicode'結合使用。 – MarkJ

0

Encoding.Default從@ MarkJ的答案適合我,但我有點緊張,因爲它的默認取決於你的語言環境。找到KB 311338,它顯示瞭如何明確指定字符集,並建議1252西歐字符。因此,將馬克的例子,即變爲:

​​

在我的英語中美系統,給出了相同的結果爲Encoding.Default,但指定1252理論上應該給予同樣的結果,無論語言環境。

更新2016年1月18日

看到下面@ MarkJ的評論後,我做了一些更多的研究和發現,VB6 StrConv事實上確實使用默認的語言環境,除非你指定一個。 (你只能指定一個LocaleID,例如1033代表美國英文,而不是ANSI代碼頁,例如1252代表西歐)。因此,Encoding.Default與沒有LocaleID的StrConv更接近。 GetEncoding(1252)增加了Mark的VB6示例中沒有的特性。

+1

所有的真實情況,我只會注意到VB6的轉換將根據您的語言環境而有所不同,所以如果您正在尋找與VB6行爲完全相同的行爲 - 也就是說,如果您的用戶在不同的語言環境中運行您的程序 - 「Encoding.Default」是最佳選擇。在其他情況下,您可能需要指定區域設置。 – MarkJ

+0

謝謝@MarkJ。答案已更新。 –