NET は vbUnicode UTF32Encoding/UTF32Decoding と同等ですか?
3 に答える
vbUnicode は単なる定数です。それ自体は無意味です。コードを見せてください。そして、あなたは何をしようとしていますか?
このようにStrConvで ANSI 文字列を UTF32 に変換していますか?
newString = StrConv(ansiString, vbUnicode)
Encoding.Defaultは ANSI エンコーディング用であるため、VB.Netに相当するものはEncoding.Default.GetStringである可能性があります。
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
。GetEncoding(1252)
Mark の VB6 の例にはなかった特異性を追加します。